You are on page 1of 130

M-FILES CORPORATION

COMPLIANCE KIT
CONFIGURATION MANUAL
FOR ADMINISTRATORS AND CONSULTANTS

VERSION 5.0

11.2.2022
CONTENTS

1 Purpose and Scope ..................................................................................................................................................... 8

1.1 Formatting ......................................................................................................................................................... 8

2 Prerequisites ............................................................................................................................................................... 8

2.1 Install M-Files .................................................................................................................................................... 8

2.2 Create vault ....................................................................................................................................................... 9

2.3 Install Compliance Kit to the server .................................................................................................................. 9

2.4 Install Application License ................................................................................................................................. 9

2.5 Install Compliance Kit to the client ................................................................................................................... 9

2.6 Setup the Sample implementation ................................................................................................................. 10

2.6.1 Full demo setup .......................................................................................................................................... 10

2.6.2 Advanced partial setup ............................................................................................................................... 11

2.7 Upgrading Compliance Kit ............................................................................................................................... 11

3 Configuration ............................................................................................................................................................ 11

3.1 Configurations ................................................................................................................................................. 12

3.1.1 Status Dashboard ........................................................................................................................................ 12

3.1.2 Configuration Editor.................................................................................................................................... 16

3.1.3 Server Validation Pane ................................................................................................................................ 26

3.1.4 Vault Structure Build Up ............................................................................................................................. 26

3.1.5 Configuration Import/Export ...................................................................................................................... 27

3.2 Configuration files ........................................................................................................................................... 28

3.3 Warnings ......................................................................................................................................................... 29

3.4 Search Conditions............................................................................................................................................ 29

3.4.1 Search Condition ......................................................................................................................................... 29

3.4.2 Expression ................................................................................................................................................... 30

3.4.3 Typed Value ................................................................................................................................................ 35

3.4.4 Lookup ........................................................................................................................................................ 36

Page 2 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
3.5 Translatable Content ....................................................................................................................................... 37

3.6 Placeholders .................................................................................................................................................... 38

3.6.1 Placeholder Templates ............................................................................................................................... 40

3.6.2 Reference Tree ............................................................................................................................................ 41

3.6.3 Default Placeholder Commands ................................................................................................................. 41

4 Modules .................................................................................................................................................................... 45

4.1 Advanced Notifications ................................................................................................................................... 45

4.1.1 Async Processing ......................................................................................................................................... 45

4.1.2 Daily Task .................................................................................................................................................... 45

4.1.3 Multi-server Mode Syncronization ............................................................................................................. 45

4.1.4 Security ....................................................................................................................................................... 46

4.1.5 Rule Editor Dashboard ................................................................................................................................ 46

4.1.6 Notification Rule ......................................................................................................................................... 46

4.1.7 Notification Group ...................................................................................................................................... 48

4.1.8 Notification Log ........................................................................................................................................... 48

4.1.9 Configuration Object ................................................................................................................................... 49

4.2 Change Request .............................................................................................................................................. 49

4.2.1 Version controlled classes........................................................................................................................... 50

4.2.2 Auto flags .................................................................................................................................................... 50

4.2.3 Branch property mapping ........................................................................................................................... 50

4.2.4 Version level list .......................................................................................................................................... 51

4.2.5 New Controlled document .......................................................................................................................... 51

4.2.6 New Working copy ...................................................................................................................................... 51

4.2.7 Modify Controlled document ..................................................................................................................... 52

4.2.8 Version Working copy ................................................................................................................................. 52

4.2.9 Retire Controlled document ....................................................................................................................... 53

4.2.10 Retire Working copy ............................................................................................................................... 53

4.2.11 Properties ............................................................................................................................................... 54

Page 3 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.3 Controlled Printing .......................................................................................................................................... 55

4.3.1 Controlled Print Rule................................................................................................................................... 56

4.3.2 Workflow Configuration ............................................................................................................................. 58

4.4 Electronic Signature ........................................................................................................................................ 58

4.5 Hierarchy Manager.......................................................................................................................................... 58

4.5.1 Hierarchy Rule ............................................................................................................................................. 59

4.6 Log Exporter .................................................................................................................................................... 61

4.6.1 Export Providers.......................................................................................................................................... 63

4.6.2 Sections for Previous Versions .................................................................................................................... 65

4.6.3 Multi-Server Mode Compatibility - Automatic Configuration Upgrade ...................................................... 66

4.6.4 Warnings ..................................................................................................................................................... 66

4.7 Managed Properties ........................................................................................................................................ 67

4.7.1 Auto Calculated Properties ......................................................................................................................... 67

4.7.2 Properties.................................................................................................................................................... 70

4.8 Object Creator ................................................................................................................................................. 72

4.8.1 Object Creator Rule .................................................................................................................................... 72

4.8.2 Panel Group Rule ........................................................................................................................................ 79

4.8.3 Property Setting .......................................................................................................................................... 80

4.8.4 Related Object Copy Rules .......................................................................................................................... 81

4.8.5 Metadata-driven access configuration ....................................................................................................... 82

4.8.6 Warnings ..................................................................................................................................................... 82

4.9 PDF Processor.................................................................................................................................................. 84

4.9.1 Structure Free mode ................................................................................................................................... 84

4.9.2 Common Metadata for All PDF Rendition Instructions .............................................................................. 85

4.9.3 Metadata Rendition Instruction ................................................................................................................. 88

4.9.4 Metadata Rendition Instruction for Multiple Objects ................................................................................ 89

4.9.5 Metadata Renditions .................................................................................................................................. 90

4.9.6 Document Rendition Instruction ................................................................................................................ 90

Page 4 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.9.7 Custom Rendition Instruction ..................................................................................................................... 91

4.9.8 Source linking .............................................................................................................................................. 92

4.9.9 Digital Certificates ....................................................................................................................................... 92

4.9.10 Overlays .................................................................................................................................................. 93

4.9.11 Custom Rendition Configurations .......................................................................................................... 97

4.9.12 Rendition Parts ....................................................................................................................................... 98

4.10 Periodic Task ................................................................................................................................................. 100

4.10.1 Time Unit Property ............................................................................................................................... 101

4.10.2 Interval Property .................................................................................................................................. 101

4.10.3 Period Start Date Property ................................................................................................................... 101

4.10.4 Period End Date Property ..................................................................................................................... 101

4.10.5 Time to Complete Property .................................................................................................................. 101

4.10.6 Activation Time Unit Property .............................................................................................................. 102

4.10.7 Activation Date Property ...................................................................................................................... 102

4.10.8 Task Processing Rules Configuration .................................................................................................... 102

4.10.9 Initial Creation Rules Configuration ...................................................................................................... 103

4.11 Print And Download Prevention Manager .................................................................................................... 105

4.11.1 Print And Download Prevention ........................................................................................................... 105

4.11.2 Prevention Exception Rule ................................................................................................................... 105

4.12 Training ......................................................................................................................................................... 105

4.12.1 Background Processing ......................................................................................................................... 105

4.12.2 Current status ....................................................................................................................................... 106

4.12.3 Assigning learners ................................................................................................................................. 106

4.12.4 Training Items ....................................................................................................................................... 107

4.12.5 Learners ................................................................................................................................................ 107

4.12.6 Rules ..................................................................................................................................................... 108

4.12.7 Match criteria ....................................................................................................................................... 108

4.12.8 Groups .................................................................................................................................................. 108

Page 5 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.12.9 Membership ......................................................................................................................................... 109

4.12.10 Training records .................................................................................................................................... 109

4.12.11 Events ................................................................................................................................................... 110

4.12.12 Workflows ............................................................................................................................................ 110

4.13 UI Configuration ............................................................................................................................................ 111

4.13.1 Fast Browsing Support .......................................................................................................................... 111

4.13.2 Calendar Event Types ........................................................................................................................... 112

4.13.3 Related Object Rules ............................................................................................................................ 112

4.13.4 No Check Out ........................................................................................................................................ 112

4.13.5 No Copy ................................................................................................................................................ 112

4.14 Unique Object Enforcement.......................................................................................................................... 112

4.15 User Synchronization .................................................................................................................................... 114

4.15.1 Login Accounts in Multi-server Mode .................................................................................................. 114

4.15.2 Person ................................................................................................................................................... 114

4.15.3 Object Creation Enabled ....................................................................................................................... 115

4.15.4 Active Synchronization ......................................................................................................................... 115

4.15.5 Background Synchronization Interval ................................................................................................... 115

4.16 Utilities .......................................................................................................................................................... 116

4.16.1 File Version ........................................................................................................................................... 116

4.16.2 Published Version ................................................................................................................................. 117

4.16.3 Last Editable Version ............................................................................................................................ 117

4.16.4 Sequences ............................................................................................................................................. 118

4.16.5 Assignment Class Permissions .............................................................................................................. 119

4.17 Version Control ............................................................................................................................................. 120

4.17.1 Controlled Status .................................................................................................................................. 120

4.17.2 Creating new versions .......................................................................................................................... 121

4.17.3 Version controlled classes .................................................................................................................... 121

4.17.4 Versioning Schemes .............................................................................................................................. 122

Page 6 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.17.5 Workflows ............................................................................................................................................ 123

4.17.6 Disable Automatic Property Updates ................................................................................................... 124

4.17.7 Disable Working Copy and Released Version Preview Tabs ................................................................. 125

4.17.8 Warnings............................................................................................................................................... 125

4.18 Version Control Lite ....................................................................................................................................... 125

4.18.1 Two publishing modes .......................................................................................................................... 125

4.18.2 Revert to Editable functionality ............................................................................................................ 126

4.18.3 Versioning Schemes .............................................................................................................................. 126

4.18.4 Workflows ............................................................................................................................................ 128

4.18.5 Warnings............................................................................................................................................... 129

5 Issues to remember ................................................................................................................................................ 129

5.1 Permissions ................................................................................................................................................... 129

6 Major changes in the document ............................................................................................................................. 130

Page 7 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
1 PURPOSE AND SCOPE

This document is a configuration manual for administrators and consultants who want to set up M-Files Compliance
Kit.

Prior M-Files administrator knowledge is required.

Full descriptions or specifications of all Compliance Kit modules or their capabilities is not included. For more details
about each module and technical details on installation, refer to other possibly available specification and other
related documents.

1.1 FORMATTING

This document uses text coloring and formatting to more clearly separate configuration keys and names of elements
from the text body. This chapter will contain example of all the formatting used.

// Contents of a configuration file are typed using monospace font,


// and have full width light gray background with border.
{
"key" : "value",
"config" : {
"group" : [
{
"value": 3,
"objecttype": "document"
},
{
"value": 5,
"objecttype": "property"
}
]
}
}

Configuration key reference in the body text uses mono space green font and when required with dot notation like
config.group[0].value = 3. When the index of an array is not relevant to the explanation or the example can
refer to all array elements the number is left out.
"The respective type is set using config.group[].objecttype."

Reference to a button on the user interface includes a border.

Names of M-Files elements such as Object type, Class, Property definition, Workflow, Value list and alias are
highlighted by using colored italics.

Documentation that is valid only for certain post release versions is identified using a version tag that specifies the
version in which the feature has been introduced. Example (3.0.777.10+).

2 PREREQUISITES

The following preparations are required before any configurations can be performed.

2.1 INSTALL M-FILES

Install the latest available M-Files.

Page 8 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
2.2 CREATE VAULT

Using the M-Files Admin create a new document vault to use as a base for your Compliance Kit vault. An existing vault
may also be used, with caution.

2.3 INSTALL COMPLIANCE KIT TO THE SERVER

Install the latest available Compliance Kit vault application.

In M-Files Admin:

• Select the target vault.


o Action –menu or right click on the vault name.
▪ Applications
• Install…
o Select file: M-Files_ComplianceKit_xxx.mfappx
o Answer Yes to the "Do you want to restart the document vault now?" or
separately restart the vault.

2.4 INSTALL APPLICATION LICENSE

Compliance Kit requires a license be installed for it to operate.

In M-Files Admin:

• Select the target vault.


o Action –menu or right click on the vault name.
▪ Applications
• Select M-Files Compliance Kit application.
o License
▪ Install License…
• Select the <filename.lic>-file that was provided with the
purchase of Compliance Kit.
▪ If the license is valid, (click Apply and) OK to install it.
▪ Navigate to the Configuration > Other Applications > Compliance
Kit -tree node.
▪ On the dashboard, the license changed message will now be
visible. For the new license to take effect, click Apply .

The list of which modules are available for use in the Compliance Kit is controlled via this license. If no modules are
specified in the license, then all modules will be available for use.

2.5 INSTALL COMPLIANCE KIT TO THE CLIENT

After installing the Compliance Kit to the server.


In M-Files Desktop:

Page 9 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Log out from the selected vault, if already in.
o Note: The "Log Out" performed from the M-Files notification area icon is the most secure way to do
so.
• Log in to the selected vault. To be able to configure the Compliance Kit, log in as a user with the full control of
vault -rights.
• Allow the applications to run.
o Note: This will install the M-Files Compliance UI application.

2.6 SETUP THE SAMPLE IMPLEMENTATION

To setup a usable vault you may do either a partial or full demo setup. Demo setup contains one set of configurations
and one set of pre-specified functionality. Both setup methods provide a good base to start experimenting with
configuration changes.

This chapter shows a quick reference for installing the demo setup for both the partial and full setups. For more
details on the actions seen here, see further down in this document.

Additional example structures and configurations for different use cases can be provided separately.

2.6.1 FULL DEMO SETUP

Quick sequence to setup the full Compliance Kit sample implementation into an empty vault.

• Prerequisites:
• New vault has been created.
• Compliance Kit application has been installed.
• Valid license has been applied.

NOTE: If you have a license with limited set of modules, use the partial setup 2.6.2 instead.

• Select the M-Files Admin > Server > Vault Instance > Configurations -tree-node. From the right-pane
dashboard node-tree navigate to Other Applications > Compliance Kit tree-node.

o From the dashboard, select Apply located in the upper right section of the dashboard to see
licensed modules.

o Once the licensed modules have been updated, from the dashboard, select Import located in the
Vault Structure > Import Full Sample Metadata Structure and Configurations section.
o Read the prompt carefully, then select OK to proceed.
o Once the process completes, select OK on the confirmation prompt.
o Re-navigate to Other Applications > Compliance Kit tree-node, then as instructed by the previous
prompt, click Apply then OK at the prompt to take the changes into immediate use.

Page 10 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
2.6.2 ADVANCED PARTIAL SETUP

Quick sequence to setup a partial Compliance Kit sample implementation. Can also be used to upgrade previous
Compliance Kit installations or other non-empty vaults.

• Prerequisites:
• New vault has been created.
• Compliance Kit application has been installed.
• Valid license has been applied.

• If a valid license already exists, the sub-bullets below may be skipped… Otherwise, follow the steps below.
o Select the M-Files Admin > Server > Vault Instance > Configurations -tree-node. From the right-pane
dashboard node-tree navigate to Other Applications > Compliance Kit tree-node.

o From the dashboard, select Apply located in the upper right section of the dashboard to see
licensed modules.

• Import all or individual module configurations.


o Individual module configurations.
▪ Navigate to the specific module's Configuration tree-node, right click on the Configuration
tree-node and select Load Default from the context menu, select OK to proceed, then click
Save to persist the changes.
▪ Do this for each module that you wish to import the default configuration for.
o All configurations
▪ Once the licensed modules have been updated, from the dashboard, select Import located
in the Vault Structure > Import Sample Configurations section.
▪ Read the prompt carefully, then select OK to proceed.
▪ Once the process completes, select OK on the confirmation prompt.
• Click Upgrade from the Vault Structure > Upgrade Vault Structure section, once the Upgrade Vault Structure
dashboard is shown, choose the default structure items that you wish to import.
o Optionally generate an upgrade preview report by clicking Generate Preview.
• To import the structures to the vault, click Upgrade Vault Structure.
• Once completed a completion prompt is shown, select OK to proceed.
• Select Apply from the dashboard, then click OK on the prompt to take all changes into immediate use.

2.7 UPGRADING COMPLIANCE KIT

See the separate document Upgrading M-Files Compliance Kit.

3 CONFIGURATION

Creating a fully customized functionality of the Compliance Kit by modifying the empty or the demo environment is
done in two phases:

Page 11 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
1. Creating new metadata structure elements into the vault and assigning the required aliases to them by using
the M-Files Admin.
2. Setting the JSON configurations of the Compliance Kit modules in the Configurations (3.1) to match the
requirements using the instructions specified in this document (3.5).

3.1 CONFIGURATIONS

The M-Files Compliance Kit Configurations are available via the M-Files Admin under the Configurations node, under
the respective vault.

The Configurations lists all included Compliance Kit modules, their current enabled –state, validity of their
configuration and option to edit the configurations.

3.1.1 STATUS DASHBOARD

The status dashboard is used to determine the current state of the application and their modules. There are two
types of status dashboards within the Compliance Kit. The Application Status dashboard and the Module Status
dashboard. While both are similar, they do contain different data, see below for details.

3.1.1.1 APPLICATION STATUS

The application status dashboard is primarily used to describe the status of all modules contained within a given
domain.

The status of the domain itself will be displayed in the upper right of the dashboard.

In multi-server mode, the Compliance Kit application runs on each server that the vault is attached to. When the vault
is restarted, or the latest configuration changes are applied it may take a moment for application instances to come
back on line or re-initialize with the updated configurations. The Status Overview section will indicate the known
status of each instance. The first instance is always the current instance, that MFAdmin is connected to, indicated by
the "(connected)" and will always have the same status displayed in the upper right dashboard. If there are other vault
instances, they will also appear, along with an "Update" button that can be used to request a fresh status report from
the other instances.

There will be a listing of all available modules.

Page 12 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
- Each module will have title, description, link to the configuration for the module, status label and status indicator
(shown below).

Page 13 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
License Information is available within the license section:

When license changes are detected a license status section is shown.

There is also a section that contains vault structure actions.

3.1.1.2 MODULE STATUS

The module status dashboard holds information and actions specific to the module. A basic implementation may
contain no more information than then listing in the Domain Status dashboard.

However, some modules contain additional information and/or configurable items.

Example from the Print and Download Prevention Manager dashboard:

Page 14 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
3.1.1.3 SHARED PANELS

Both the Domain and Module status dashboards share the upper header pane and lower info panels. Within the
upper section, we see title, description, status label and status indicator for the active selection.

When the Compliance Kit Domain is selected, a basic header will be shown.

When a module is selected, additional tabs are visible, as well as the addition of any applicable action buttons.

Note: The asterisk visible below indicates that the configuration has been changed.

In the lower section of the dashboard we see the available info panels.

Info - The info panel may be expanded to display additional help text, where applicable.

Comment - May be used to view and edit comments for a given selection in the property grid.

Page 15 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Local - Displays local validation messages.

Server - Displays any server validation messages.

3.1.2 CONFIGURATION EDITOR

The configuration editor shows the current configuration for a given module and allows it to be modified, saved and
applied. A module's configuration can be viewed and edited as raw JSON via a text editor in the Advanced tab, or via a
graphical JSON editor grid via the Configuration tab.

If an error occurs while loading the configuration, or if a syntax error is introduced, only the Advanced tab text editor
will be available to the users until the issue is resolved. It is highly recommended to use the Configuration tab to edit
the configurations, to ensure syntax and other errors can be avoided.

In the graphical JSON editor Advanced tab, all available, non-deprecated properties are shown, even if they are not
present in the JSON text.

Page 16 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Figure 1 - The same configuration section shown in both raw JSON text and in the graphical JSON editor.

3.1.2.1 STANDARD COMMANDS

The configuration editor provides the following common commands that are available when they are applicable in the
upper right header area:

• Save - Saves the current configuration into the vault.


• Discard - Discards any unsaved changes from the editor.
Apply - Applies the latest saved changes (take them into use). This restarts all modules and applies the latest
save configurations for all of them.
o When running in multi-server mode environment, a broadcast message is sent to all servers in the
availability group to apply configuration changes automatically.

Page 17 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
If trying to Save a configuration that does not follow JSON style requirements, or high-level content requirements of
the specific module, an error is displayed and the configuration remains un-saved. About the JSON format of the
configuration files, see the paragraph 3.2 below. More on module dependent details on each different configuration,
see respective sections under chapter 3.5.

Upon opening a domain or module node, when structure is changed and after every Save or Apply the system will
automatically run validation in the background, displaying any issues detected, as well as all resolved vault structure
elements. The results returned from validation are the same as those described in the Server Validation Pane section.

For the changed saved settings to become active, the Apply button of the Configurator must be clicked. Whether the
configurations have changed or not, applying configurations will effectively restart all modules and thus it may not be
safe to perform while the vault is actively in use. A safer option in production environments is to take the vault offline
and online, before and after performing any configuration changes. As of Compliance Kit October '20 Update
configurations are no longer applied when the vault comes online. You must explicitly apply them.

3.1.2.2 LISTS (JSON ARRAYS)

Most module configurations have at least one property that holds a list or collection of items (represented in JSON as
an array). Lists allow a variable number of specific configuration items to be defined.

When displayed in the graphical JSON editor, each list item row has a minus button aligned to the right side. The
button can be used to remove the corresponding configuration item/section. Each array item also has an extra row
underneath its items that contains a link to create an additional item. When a new list item is created, default values
may be pre-filled.

Note that lists can be nested inside of other list items.

Figure 2 - Arrays shown in the graphical JSON editor. Red boxes represent the array properties, the orange boxes represent array items, the green
boxes highlight the add item buttons, and the yellow boxes highlight the remove item buttons.

Page 18 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
3.1.2.3 HELP TEXTS

Most properties and sections within the graphical JSON editor include help text, so administrators can quickly
understand the values they may edit. If a help text is available, the blue icon will be shown in the row. The help
text will be displayed as a tooltip when hovering over the mouse over the icon, or in the Info tab at the bottom of the
dialog when the row is focused.

Figure 3 - A property's help text shown in the Info tab and as a tooltip in the graphical JSON editor.

3.1.2.4 COMMENTS

The JSON format does not natively support comments, and extended support for inline and block comments (starting
with "//" or enclosed between "/*" and "*/") has been removed. Instead additional, non-reserved, non-deprecated
keys can be added to any JSON object and will safely be ignored. This can allow sections of the JSON to be effectively
commented out if needed for testing purposes.

The graphical JSON editor has a built-in mechanism that allows the saving and viewing of comments if they are in the
right location and have a property name following a certain format. Getting the name and location correct is difficult,
particularly for array items, so it is recommended to always add comments via the graphical editor.

To add a comment, focus a tab, header or property row in the grid, and then select the comment tab at the bottom of
the dialog. Any text entered within the Comment pane will be preserved. Once a comment has been set for an item, a
yellow speech bubble icon will be displayed in the corresponding row.

Note: A comment can be seen in a tooltip by hovering over the comment icon.

Page 19 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Figure 4 - A comment shown in the Comment tab and as a tooltip in the graphical JSON editor.

Figure 5 - A comment created in the graphical JSON editor shown in the raw JSON text editor (underlined in red).

Note: Entire sections of a configuration can be effectively commented-out by changing their key. If an object falls
within an array, the object needs to be moved to another array under a different key.

Page 20 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Figure 6 - Example of a commented-out configuration section. The default Managed Property[ 1 ] has been moved under an unreserved key. It will
safely be ignored, but persisted.

3.1.2.5 VALIDATION

The graphical JSON editor provides some simple validation while editing so issues can be spotted before saving the
configuration. When there is a validation issue, the row will turn pink and a red exclamation icon will be shown next
to it. By hovering the mouse over the icon, a tooltip will be shown that explains the issue, if the icon is clicked the text
will be displayed within a message box.

Figure 7 - Validation Issue

3.1.2.6 VAULT ELEMENT EDITORS

Most module configurations contain properties that should point to vault structure elements (i.e. Object types,
Classes, Property Definitions, etc…). The graphical JSON editor provides special controls for these properties. These
controls make it easy to select a valid value and choose the reference type (ID, GUID or Alias). The controls consist of
two parts, the element selector to the left, and the reference selector the right.

Page 21 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Values shown in the element menu may be filtered based on other configured values, or other restrictions defined by
the module based on various properties, for example; Object Type compatibility, Data Type, Owner, etc…

Figure 8 - Property Definition selector. The dropdown collection may have additional filtering, which will be specified in the gray header.

Page 22 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
3.1.2.7 PLACEHOLDER TEXT EDITOR / DIALOG

The placeholder text editor and dialogs are provided when a configuration value requires a string that contains static
text alongside special placeholder aliases, vault structure references, or environment specific placeholders that will be
replaced with their respective values from an object in the vault. It can also be provided when a Property Definition or
value can be specified, possible indirectly - in these cases it is important to only define a single placeholder, and no
additional text.

The editor behaves as a standard text editor with the exception that placeholders can be inserted, and their
references constructed from select lists.

Figure 9 - Placeholder text editor inline within the JSON property grid. The dialog can be launched by clicking the icon at the right of the input.

The dialog provides a button for inserting a placeholder, and a toolbar for inserting and removing indirection levels
from an existing placeholder. When using the editor in the grid (not via the dialog) these actions must be done via
keyboard shortcuts.

Common Shortcuts:

• Focus in the text box


o Ctrl+I - Inserts a new placeholder at the caret.
• Focus in a placeholder:
o Ctrl+I - Adds a new indirection level before the currently focused level.
o Ctrl+PERIOD - Adds a new indirection level after the currently focused level.
o Ctrl+Del - Removes the currently focused indirection level.
o PERIOD - Moves to the next indirection level, or adds a new one if the last one is focused.

The dialog also provides the ability to see the underlying placeholder text (without the placeholder select lists), and
allows each object type and property definition reference to be controlled via the Reference table in the lower
References tab.

The referenced items can also be changed via the References tab. For newer, non-standard placeholders (for
example, USERCAUSEDWORKFLOWSTATE, RELATEDALLCLASS, OLDPROPERY, etc..), this is the only place the
referenced item can be changed.

Page 23 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Figure 10 - Placeholder text editor dialog. Includes Reference table and placeholder level toolbar.

Copying and pasting to/from/within the dialog will convert to/from the raw text format. Also typing using raw text or
by using a closed set of curly braces will automatically be converted to a placeholder control.

3.1.2.8 FILTER CONDITION DIALOG

The search condition dialog allows users to specify M-Files search conditions for use by the modules. Often the
conditions are used to match a specific object with a given configuration rule.

A summary of the defined search conditions is shown in the property grid, but the conditions can only be modified
from the dialog. Similar to the native "Additional Conditions" dialog of the client. The search condition dialog allows a
left operand expression, an operator and a right operand value to be specified for each condition.

The left operand can use indirection levels, and select from Object Types and Property Definitions or from built-in
Status, File or Permission values. Not all expressions support indirection, or every operator. The right operands value
is controlled by special editors depending on the expected datatype of the expression.

Additional conditions can be added by clicking the Add Condition button. Existing conditions can be removed by
clicking the icon to the left of each condition (note that the is only visible for hovered or focused rows).

Conditions can also be added using the templates defined in lower Templates tab. Conditions can be added to the
Favorites by clicking the "Add to favorites" button to the right of each condition.

Note: The "is empty or missing" operator behaves as "is empty" in searches so some objects that would match the
conditions may not appear in the search results.

Page 24 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Figure 11 - Filter condition dialog. Showing the indirection toolbar, and the reference table.

3.1.2.9 TRANSLATION DIALOG

Properties containing text that may appear in the user interface can be translated. The text entered directly to the
property grid is assumed to be the default language. Clicking the icon to the right of the input will launch a translation
dialog which can be used to specify other language translations for the text. Which translation a user sees depends on
their client language settings.

Figure 12 - Translate content dialog. Used to translate configured texts that can appear in the user interface.

If more than one text (translation) is specified, the default text can no longer be modified from the property grid,
instead it must be edited from the dialog. This ensures that users are aware that other translations may need to be
updated as well.

Page 25 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
3.1.3 SERVER VALIDATION PANE

The Server validation panel in the Configurator can be used to get more detailed error about the possible module
configuration faults. It may be used to verify that the vault contains all the configured items each module needs to
function.
Disclaimer: An "OK" result from this check does not guarantee that any module can fully operate error free using the
metadata elements referenced by the aliases configured, but does provide a decent high-level verification.

Structure verification will use the last saved configurations, not the ones currently in use by running modules. This is
to say that; the validation will verify the settings that are to be used the next time changes are applied via the Apply
button or via a vault restart.

Note: Modules may display errors from missing optional elements and still display a green module status indicator.
Optional elements are those which the module does not require to function, but can utilize if found / are present in
valid configurations.

3.1.4 VAULT STRUCTURE BUILD UP

Import option in the Compliance Kit > Vault Structure > Import Full Sample Metadata Structure and Configurations will
import the included default sample structure and content into the vault. Most modules will be enabled by default
within their default configurations. This option corresponds the content replication import available in the M-Files
Admin and may overwrite any existing and potentially matching structures without further warning. The process may
take some time and a loading spinner will block the UI during this process.

Page 26 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Import option in the Compliance Kit > Vault Structure > Import Sample Configurations will import the included default
sample structure configurations into the vault. Most modules will be enabled by default within their default
configurations. This option is often used together with the following Upgrade.

The Upgrade option in the Compliance Kit > Vault Structure > Upgrade Vault Structure will enable more fine-grained
upgrade options for the current vault. It will only import the elements required by the functionality of the modules
that are enabled and started. By checking the checkboxes within the upgrade dashboard, a user can import additional
non-functional sample structure and content provided by each module. Prior to making any changes to the vault, the
user may generate a summary report of all the impending changes from within the upgrade dashboard. From the
report window user may proceed or cancel the upgrade. The processes of generating the first summary report and the
actual upgrade may take some time. A loading spinner will be displayed while generating a preview. Applicable action
buttons will be disabled while the actual upgrade's operation is executing.

3.1.4.1 HIDING THE STRUCTURE MODIFICATION SECTION

The Import Full Sample Metadata Structure and Configurations section can be hidden in production vaults to prevent
administrators from inadvertently modifying vault structure. A flag must be set in NamedValueStorage to hide this
section, or make it visible again. The M-Files Named Value Manager tool can be used to set the flag.

Storage Type: ConfigurationValue


Namespace: M-Files.ComplianceKit.Configurator
Key: HideStructureModificationSections
Values: “1” or “True” to hide
Any other value, or no value will keep this section visible.

3.1.5 CONFIGURATION IMPORT/EXPORT

The Configurator provides a context menu option to import and export module configurations in batches.

To export all module configurations:

1. From the context menu of the Compliance Kit -tree node, select Export to Files…
2. Select a folder as the export location.
3. Click OK
4. Review the export completion message, and click OK to close.

To export an individual module configuration:

1. From the context menu of the Compliance Kit > <MODULE> -tree node, select Export to Files…
2. Select a folder as the export location.
3. Click OK
4. Review the export completion message, and click OK to close.

All configurations will be written to the selected folder with the following file name format:
[ModuleKey].Configuration.json

To import module configurations:

1. From the context menu of the

Page 27 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
a. Multiple configuration import: Compliance Kit -tree node, select Import from Files…
b. Individual configuration import: Compliance Kit > <MODULE> -tree node, select Import from Files…
2. Select one or more configuration JSON files to import.
a. Note that multiple selections are only valid from the Compliance Kit -tree node.
3. Click Open
4. Review the import completion message, and click OK to close.
5. Optionally choose to apply the configurations after successful import.

For the batch importer to detect a configuration in a folder, the file name must contain the entire module key for
which it is intended (e.g., M-Files.ComplianceKit.[ModuleName]).

3.2 CONFIGURATION FILES

All configuration files of the Compliance Kit modules are in the JSON format. NOTE: starting from Compliance Kit
2015.3 the main tool for editing the configurations is the graphical configuration editor but the raw JSON content is
still visible.

Common details about the JSON configuration format:

• Configuration is at least one block, surrounded with curly braces, ‘{‘ and ‘}’.
• Key names must be strings enclosed with double quotes.
Straight quotes only, not the curly typographers “quotes”, aka smart quotes used by MS Word.
• All blocks that start must also end.
• The default configuration files contain most of the configurable keys the module can utilize.
o Documentation may include few unused extra keys/features.
o Don’t add your own keys, although those are silently ignored.
• Don’t change any of the value types.
o If the value is an object or an array, keep it as such.
o Do not add arrays to replace single value.
o Exception, many configurable options are references that can be either a string containing an alias or
a GUID or an integer containing the actual ID value.
• Backslash is special character so if used in path like values it must be duplicated. E.g. "C:\\Windows\\"
o For path values the normal slash works also. E.g. "C:/Windows/".
• In-line and block comments are technically not supported in JSON, and though they can still be used and
saved, the graphical JSON editor and upgrades may strip them from the configuration.
• Properties not specifically used or deprecated in a configuration section will be ignored, so it is possible to
include extra information into a section using custom properties (this is how commenting should be done).
• The graphical JSON editor adds comments to sections by creating a custom property in the nearest object.

After the Compliance Kit application install, all modules will have the following minimal empty configuration.

{
"Enabled": false
}

Until the Enabled flag is set to true the module will remain in stopped state and does not provide any functionality.
For most modules, turning the Enabled as true in the above empty configuration is not enough and will result to
erroneous state of the module. If any enabled module is in erroneous state (shown with red circle symbol in the Vault
Verification report and on the Configurator) this will cause "Operation is not allowed. The {0} has invalid
configuration" –errors for any events which any enabled module monitors, not only related to the module in question.

Page 28 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Basically, if any Compliance Kit module is in error, none of them will work and consequently the whole vault is
crippled.

3.3 WARNINGS

This chapter and others under different modules in chapter 3.5, will list known DO’s and DON’Ts and other items that
need to be remembered to avoid easy mistakes. Here are the general common things, the module related items under
the respective module.

• If in a running system the vault structure is edited in any parts that are used or accessed by the Compliance
Kit functionalities, the vault needs to be restarted (take vault offline and back to online) or the Compliance Kit
configurations need to be re-applied ( Apply in Configurator, even if the configurations themselves are not
modified)
o If this step is neglected, any action may return an error. Most often that error is "Not found" or
something related and the (topmost) line in error stack has reference to
MFiles.ComplianceKit.MetadataCache:

MFiles.ComplianceKit.MetadataCache.MetadataStructureCache.GetObjectType(Vau
lt vault, Int32 objTypeId) in t:\M-Files_QMS\2.1.246.4\M-
Files_QMS\2.1.246\src\MetadataCache\MetadataStructureCache.cs:line 214

3.4 SEARCH CONDITIONS

Search conditions can be configured in multiple places in multiple modules. They allow the specification of search
conditions for use in normal M-Files’ searches or as match criteria for assigning behavior to specific objects. They
closely model the SearchCondition structure within M-Files API but are tailored for specification in JSON and also allow
structure element references (for example, aliases and GUIDs) to be used in place of IDs.

In most places the Compliance Kit modules use the SearchConditions as filter conditions. In this use there is a small
logic difference compared to standard search condition evaluation done by the M-Files. Equals-Null condition will
match all objects without the defined property as well as objects with the property with null value. Standard
evaluation will only match objects containing the property value null. Those few places where standard evaluation is
used are marked.

Note: Deviating from the standard JSON format used thus far in the Compliance Kit, property and enumeration names
within the SearchCondition structures are specified in camel-case. Meaning they begin with lowercase letters, and the
first letter of each subsequent word within the name is capitalized. Only the first letter of acronyms is capitalized.

3.4.1 SEARCH CONDITION

A search condition consists of three parts. The left side of the search condition determines which piece of the
document's metadata the search condition concerns. The middle part of the search condition is the type of the
condition (e.g., "equal" or "not equal"). The right side of the search condition is the desired value of the expression.

The Expression object encapsulates the data required for the expression, including the left operand and possible
options for the expression. A TypedValue object is used to define the value (i.e., an operand for the expression). The
condition operator is set with the ConditionType member.

Page 29 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
It is important to note, that because the API objects are simply mirrored in the JSON, there are many potential
combinations that are not logical or are not supported by the platform. The API documentation should be used as a
supplemental resource to verify that the correct operators and typed values are used with each expression.

• conditionType
o (Required) Option specified as text.
o Represents the operator of the expression, determining how the operands (values specified in the
search condition and an object’s values) are compared or evaluated against another.
o Acceptable Values (each mapping to an MFConditionType specified in the API documentation):
▪ "equal" (can appear as "empty", "empty or missing", "one of", or "includes" in the dialog)
▪ "notEqual" (can appear as "not empty", "not one of" or "does not include" in the dialog)
▪ "greaterThan"
▪ "lessThan"
▪ "greaterThanOrEqual"
▪ "lessThanOrEqual"
▪ "contains"
▪ "doesNotContain"
▪ "startsWith"
▪ "doesNotStartWith"
▪ "matchesWildcardPattern "
▪ "doesNotMatchWildcardPattern"
▪ "isMissing" ( not supported )
▪ "isNotMissing"
▪ "startsWithAtWordBoundary"
▪ "containsAnyBitwise"
▪ "doesNotContainAnyBitwise"
• expression
o (Required) An object defining the type of expression used in the search condition, including the
value to the left side operand/value, and sometimes also the right.
o See section 3.4.2 Expression for more details.
• typedValue
o (Required for most expression types.) Represents the right side operand/value for certain expression
types.

3.4.2 EXPRESSION

The expression object defines the type of expression used in the search condition, including information for how the
right-side operand/value is resolved, and sometimes also includes specification of the left-side value.

The expression object can represent many types of expressions indicated by the value of the Type key. Different
properties are expected to be defined based on the expression type. All available keys are presented in this section,
and then again in relevant sub-sections which cover the specific keys required and available for each expression type.

• type
o (Required) Indicates the type of expression being defined.
o Acceptable Values (each mapping to an MFExpressionType specified in the API documentation):
▪ "propertyValue"
▪ "objectIDSegment"

Page 30 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
▪ "statusValue"
▪ "fileValue"
▪ "typedValue"
▪ "anyField" (not supported in the dialog)
▪ "permissions"
• fullTextSearchFlags
o (Optional) Only has an effect when Type = "anyField".
o Not supported in the dialog.
• fileType
o Required and only has an effect when Type = "fileValue".
• segmentSize
o Required and only has an effect when Type = "objectIDSegment".
o Not supported in the dialog.
• permissionsType
o Required and only has an effect when Type = "permissions".
• propertyDef
o Required and only has an effect when Type = "propertyValue".
o Indicates which property value of an object is used as the right side operand of the expression.
• statusType
o Required and only has an effect when Type = "statusValue".
o Indicates which status value of an object is used as the right side operand of the expression.
• dataType
o Required and only has an effect when Type = "typedValue".
o Attempts to use any/all property values of an object as the right side operand of the expression.
• valueList
o Required and only has an effect when Type = "typedValue". types.
• indirectionLevels[]
o Optional, array of simple objects that reference either property or object type references to
evaluate the primary expression against objects referenced by the object being matched.
o Each level must specify one, and only one, of the following keys:
▪ propertyDef
• Property Definition reference (ID, GUID, or Alias).
▪ objType
• Object Type reference (ID, GUID, or Alias).
• dataFunction
o (Optional) Default = "noOp".
o Only has an effect when Type = "propertyValue", "statusValue" or "typedValue".
o Effects the expected datatype of the TypedValue (right operand).
o Acceptable Values (each mapping to an MFDataFunction specified in the API documentation):
▪ "noOp"
▪ "year" (integer, format "YYYY")
▪ "month" (text, format "MM")
▪ "yearAndMonth" (text, format "YYYY-MM")
▪ "date" (date)
▪ "daysFrom" (integer)
▪ "daysTo" (integer)
▪ "integerSegment" (Not supported in the dialog.)
▪ "leftChars" (Not Supported.)

Page 31 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
▪ "initialCharGroup" (Not supported)
• parentChildBehavior
o (Optional) Default = "none".
o Only has an effect when Type = "propertyValue" or "typedValue".
o Acceptable Values (each mapping to an MFDataFunction specified in the API documentation):
▪ "none"
▪ "includeChildValues"
▪ "includeParentValues"

3.4.2.1 PROPERTY VALUE EXPRESSION

Property Value expressions use an objects property value as the left operand/value in a search condition.

• type = "propertyValue"
• propertyDef
o Required, PropertyDef reference (ID, GUID, alias).
o Indicates which property’s value is used as the right side operand of the expression.
• parentChildBehavior
o (Optional) Default = "none".
o See section 3.4.2 Expression further explanation and acceptable values.
• dataFunction
o (Optional) Default = "noOp".
o See section 3.4.2 Expression for further explanation and acceptable values.

3.4.2.2 OBJECT ID SEGMENT EXPRESSION

• type = "objectIDSegment "


• segmentSize
o Required, Integer.
o The size of the segment.

3.4.2.3 STATUS VALUE EXPRESSION

• type = "statusValue"
• statusType
o Required, Text
o Indicates which status value is used as the right side operand of the expression.
o Acceptable Values (each mapping to an MFStatusType specified in the API documentation):
▪ "checkedOut" (Boolean)
▪ "checkedOutTo" (Lookup, User Accounts)
▪ "checkedOutAt" (Timestamp)
▪ "objectID" (Integer)
▪ "objectVersionID" (Integer)
▪ "deleted" (Boolean)
▪ "objectTypeID" (Lookup)
▪ "isLatestCheckedInVersion" (Boolean)
▪ "extID" (Text)
▪ "latestOrSpecific" (Lookup, Not supported in dialog)

Page 32 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
▪ "objectTypeAndID" (Lookup, Not supported in dialog)
▪ "objectFlags" (Integer [as bitmask])
▪ "originalVaultGUID" (Text)
▪ "originalObjectType" (Integer)
▪ "originalObjectID" (Integer)
▪ "originalObjectIDSegment" (Integer)
• dataFunction
o (Optional) Default = "noOp".
o See section 3.4.2 Expression for further explanation and acceptable values.

3.4.2.4 FILE VALUE EXPRESSION

• type = "fileValue"
• fileType
o Required, Text
o Indicates which file related value is used as the right side operand of the expression.
o Acceptable Values (each mapping to an MFFileValueType specified in the API documentation):
▪ "hasFiles" (Boolean)
▪ "fileName" (Text)
▪ "fileSize" (Integer64 [in bytes])
▪ "fileID" (Integer)
▪ "creationTime" (FileTime)
▪ "changeTime" (FileTime)
▪ "linkedToExtLoc" (Boolean)
▪ "linkedToExtLocID" (Lookup, Not supported in dialog)

3.4.2.5 TYPED VALUE EXPRESSION

• type = "typedValue"
• dataType
o Required. The datatype of the expression.
o See section 3.4.3 Typed Value further explanation and acceptable values.
• valueList
o Required if dataType is lookup based.
• parentChildBehavior
o (Optional) Default = "none".
o See section 3.4.2 Expression further explanation and acceptable values.
• dataFunction
o (Optional) Default = "noOp".
o See section 3.4.2 Expression for further explanation and acceptable values.

3.4.2.6 ANY FIELD EXPRESSION

Any Field expressions are used to perform text searches against objects’ metadata and file contents.

• type = "anyField"
• fullTextSearchFlags

Page 33 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o Optional, a simple object with keys representing available flags, and Boolean values indicating
whether they are set/active. It is only required to specify the flags to be set, as the default value is
false (not set).
o Directs the behavior of the full text search.
o Available Flags/Keys (each mapping to one of the MFFullTextSearchFlags ):
▪ stemming
▪ allWords
▪ anyWords
▪ lookInFileData
▪ lookInMetaData

The following example search condition uses an “anyField” expression to find all documents or objects that contain
the both the exact words “M-Files” and “Magic” in their metadata.

{
"conditionType":"equal",
"expression": {
"type":"anyField",
"fullTextSearchFlags": {
"allWords": true,
"lookInMetaData": true
}
},
"typedValue": {
"dataType": "text",
"value": {
"text": "M-Files Magic"
}
}
}

3.4.2.7 PERMISSION EXPRESSION

• type = "permissions"
• permissionsType
o Required
o Acceptable values (each mapping to an MFPermissionsExpressionType in the API
documentation):
▪ "acl" (Not supported)
▪ "visibleTo"
▪ "editableBy"
▪ "permissionsChangeableBy"
▪ "fullControlBy"
▪ "deletableBy"
▪ "objectsAttachableToThisItemBy"
o All supported values take a single lookup value (multi-select values are not supported) from either
the User Account or User Group lists.
o If the id value is used for a group, and it is not evident that the id is a group, its value should be
negated in the JSON.
▪ "id": -101 (negated)
▪ "item": { "id": -101 } (negated)
▪ "item": { "userGroup": 101 } (preferred syntax, no need to negate)

Page 34 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
3.4.3 TYPED VALUE

A Typed Value object contains information about a value and its type.

• dataType
o Required, text option
o Acceptable values (each mapping to an MFDatatype in the API documentation):
▪ "text"
▪ "integer"
▪ "integer64"
▪ "float"
▪ "date"
▪ "time"
▪ "timestamp"
▪ "fileTime"
▪ "boolean"
▪ "lookup"
▪ "multiSelectLookup"
▪ "multiLineText"
• value
o Required, a simple object.
o One, and only one, of the following keys should be specified in the value‘s object based on the
dataType :
▪ isNull
• Used for any dataType when there is no value.
• Always set to true, e.g. "isNull": true
▪ text
• Used when the TypedValue’s dataType is "text" or "multiLineText".
• Accepts string literal.
▪ integer
• Used when the TypedValue’s dataType is "integer" or "integer64".
• Accespts integer literal.
▪ float
• Used when the TypedValue’s dataType is "float".
• Accepts float literal.
▪ date
• Used when the TypedValue’s dataType is "date".
• Accepts ISO 8061 formatted date string, for example:
o “2015-12-31”
o “2016-02-02”
▪ time
• Used when the TypedValue’s dataType is "time".
• Accepts ISO 8061 formatted time string to second precision, for example:
o “14:37:42”
o “16:37:42”
▪ timestamp
• Used when the TypedValue’s dataType is "timestamp" or "fileTime".

Page 35 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Accepts ISO 8061 formatted timestamp string to millisecond precision, for
example:
o “2016-05-01T14:37:42.823Z”
o “2016-05-01T16:37:42.823+0200”
▪ boolean
• Used when the TypedValue’s dataType is "boolean".
• Accepts boolean literals.
▪ lookup
• Used when the TypedValue’s dataType is "lookup".
• Accepts a lookup object. See section 3.4.4 Lookup.
▪ lookups
• Used when the TypedValue’s dataType is "multiSelectLookup".
• Accepts an array of lookup objects. See section 3.4.4 Lookup.

"typedValue":{
"dataType":"multiLineText"
"value": {
"text": "My text\nwith multiple\nlines!"
}
}
"typedValue":{
"dataType":"integer"
"value": {
"integer": 100
}
}
"typedValue":{
"dataType":"boolean"
"value": {
"boolean": true
}
}
"typedValue":{
"dataType":"date"
"value": {
"date": "2016-05-01"
}
}

3.4.4 LOOKUP

Lookup is a value that holds a reference to an object/document version or value list item within a vault. Many
structure element types are listed as items within built-in value lists and can also be referenced in a lookup.

• item
o Required, a valid Value List Item or Object reference:
▪ ID (integer)
▪ GUID (string)
▪ Simple object with a single key and value, with the key, which usually represents an
MetadataStructureItemType defined in the API that have a corresponding built-in
value list. The generic keys will not work with aliases (only IDs, GUIDs and ObjIDs).
• objectClass
• workflow
• state

Page 36 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• namedACL (not supported)
• user
• userGroup
• classGroup
• valueList
• objType (pseudo-valuelist to be used for objectTypeID status expressions)
• transition
• valueListItem (generic key for valuelistitems or objects)
• objID (generic key for valuelistitems or objects)
• id (generic key for any reference)

• version
o Optional, Default = -1 (latest version)
o Can be used to reference specific object versions. Has no effect with value list item references.
o Not supported in the dialog.

Note: Validation will not be performed on the lookup values if the value list is ambiguous, so simple ID references
should be avoided. Instead use GUIDs or ObjID strings. An exception to this is when defining structure item references
with the structure key, which allows the value list to be inferred (for example, "state": 5 ).

"typedValue": {
"dataType": "lookup",
"value": {
"lookups": {
item: "(101-42)"
}
}
}
"typedValue": {
"dataType": "lookup",
"value": {
"lookups": {
item: "{3E2BB7EB-C49E-4C8C-825C-CAE0AEBA9A06}"
}
}
}

"typedValue": {
"dataType": "lookup",
"value": {
"lookups": {
item: { state: "My.State.Alias" }
}
}
}

3.5 TRANSLATABLE CONTENT

The module configurations have texts that are shown in the UI which need to be localized. The translatable content
type has been introduced for this purpose. Configuration values of this type accept either a single string (which is then
the default value and shall be used always) or an array of translations. If a text is translated, then the default
translation must be specified. The default is translation used whenever there is no matching translation for the user's
UI language. Only a single translation can be marked as default.

Page 37 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Starting from M-Files Compliance Kit 2018 the graphical editor is the main configuration tool and it contains a
dedicated dialog for entering the text translations.

Example JSON from Version Control module's Action configuration value:

"Action": [
{
"Language": "eng",
"Text": "New Major Version",
"Default": true
},
{
"Language": "fin",
"Text": "Uusi pääversio",
"Default": false
}
]
// Also the following would be accepted:
"Action": "New Major Version"

3.6 PLACEHOLDERS

Module configurations and metadata in a few specific configuration objects use placeholders to reference the
metadata of an object and its related objects. Placeholders are primarily used in text-based templates, like a
notification message or pdf text stamp (overlay). They can also be used to dynamically expand to values which
themselves are used as configuration values that drive module behavior; in these cases, they can be referred to as
reference trees.

The Compliance Kit considers all text between two percent signs, "%", without spaces or new lines to be placeholders.
Placeholders can consist of one or more levels of placeholder commands separated by a period. Placeholder
commands can be specified in one of three ways; stand-alone text (simple) or with a single numeric or alphanumeric
parameter (complex). Parameters are always defined after an underscore "_", and alphanumeric parameters must
always be wrapped in curly braces. Complex commands usually take parameters that reference vault structure items
with the id as a numeric parameter, or an alias or GUID as an alphanumeric parameter. Each command defines the
ways it can be specified.

Placeholder Command Types:

• Simple - The placeholder command by itself.


o Examples: INTERNALID, OBJTITLE, RELATEDALL
• Complex (Numeric) - The placeholder command followed by an underscore and integer parameter.
o Examples: OBJTYPE_9, PROPERTY_39, RELATEDTOCLASS_1
• Complex (Alphanumeric) - The placeholder command followed by an underscore and an alphanumeric
parameter wrapped in curly braces.
o Examples: OBJTYPE_{M-Files.PDFProcessor.Overlay},
PROPERTY_{11F4F016-8EC0-46B4-A288-5145731FB6CB}

Placeholder commands are used to output a set of values given a set of input values. This process is called expansion,
and sets of values as expansion contexts. To resolve the value of an entire placeholder, each level is expanded in
order, left to right, using the output of the previous expansion as the input for the next. The context used to expand
the first (left-most) level always consists of a single target object. The value of the placeholder, is always equal to the
expansion results of the last (right-most) placeholder command.

Page 38 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Expansion contexts can contain zero or more values. All values in a single context must have the same type, the
context type. All placeholder commands define which context types they allow as their input, and which they will
output. The output type may vary depending on how the command is specified (simple or complex), the parameter
itself, or the input type. If a placeholder command A which outputs text is placed before a placeholder command B,
which only works in an object context, a validation error will occur, and the placeholder will never expand to anything
but an empty context.

Context Types:

• None - Used by commands as their input type indicating they do not use any context for expansion, and can
only be used as the start of a placeholder.
• Any - Used by commands as their input type to indicate they can be used in any context. This is typically used
by commands that would operate on text1 or will pass the input values through a filter.
• Pass-Through - Used by commands as their output type to indicate they will output the same value as is
input, often functioning only as a filter or performing some validation.
• Object - Object (and document) versions. The type of the default context as well as the output of relationship
commands and lookup based property commands pointing to real objects.
• Text - The output of text and multiline text based property commands, as well as other commands.
Commands expecting text input define their input as Any1.
• Integer - The output of integer based property commands, as well as other commands.
• Float - The output of floating-point based property commands.
• Boolean - The output of boolean based property commands.
• Timestamp - The output of timestamp based property commands.
• Date - The output of date based property commands as well as other conversion commands.
• Time - The output of floating-point based property commands.
• Value List Item (VLI) - The output of lookup based property commands pointing to value lists.

Terminology Clarification: Placeholder expansion may, at times, be referred to as (value) resolution, and indeed the
terms expansion and resolution can be used somewhat interchangeably. In this document however, the term
expansion is preferred as a constant reminder that each placeholder command, and therefore each placeholder itself
always expands to a set of values as opposed to resolving to a single value, though those sets can be empty or contain
only a single value.

Note: The Compliance Kit extends the placeholder behavior found in M-Files core (notifications templates, auto-
concatenating properties). Placeholders used in the core should be compatible with the Compliance Kit
implementation, and behave in a similar manner. Placeholder defined in the Compliance Kit cannot necessarily be
used in M-Files core however.

1
All context types can be implicitly converted to text so that the output of any placeholder expansion can be inserted
into placeholder templates. This means that any placeholder command expecting text as the input, is compatible with
any context type. To make this clear, all placeholder commands that expect text as the input define their input as Any.

Page 39 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
3.6.1 PLACEHOLDER TEMPLATES

Placeholder templates are a combination of static text and placeholders. When expanded for a specific target object,
the placeholders inside a template are replaced with the metadata values to which they resolve from that object.

If a placeholder expands to an empty context, it will be removed from the text (replaced with nothing). If a
placeholder expands to a multi-value context, the text will contain a semi-colon separated list of values.

Example placeholder template expanded for an object without a defined workflow or state.
Template:
Target Object: (%OBJTYPE%) %OBJTITLE%
Class: %PROPERTY_100%
Workflow: %PROPERTY_38%
State: %PROPERTY_39%
Related Objects: %RELATEDALL%

Output:
Target Object: (Project) Logo Design / ESTT
Class: Customer Project
Workflow:
State:
Related Objects: ESTT Coporation (IT); Invitation to Project Meeting 1/2007; Sandra
Williams; Tommy Hart

3.6.1.1 FOR-EACH BLOCKS

For-Each blocks define sub templates within a placeholder template that will be expanded for each object within an
object context. The start of a for-each block template beings when with a placeholder that contains the FOREACH
placeholder command, and ends with a placeholder that contains the NEXT placeholder command. The FOREACH
command must be at the end of the placeholder, and only works with object contexts. The NEXT command cannot be
used with other commands.

During placeholder expansion, the for-each template will be expanded for each object in the context passed to the
FOREACH placeholder in order, all expanded templates will then be concatenated and replace the entire for-each
block.

The following example uses a for-each block to print the name and links to all objects related to the target object:
Template:
Target Object: (%OBJTYPE%) %OBJTITLE%
Related Objects:
%RELATEDALL.FOREACH%
- (%OBJTYPE%) %OBJTITLE%
%NEXT%

Output:
Target Object: (Project) Logo Design / ESTT
Related Objects:
- (Customer) ESTT Coporation (IT)
- (Document) Invitation to Project Meeting 1/2007
- (Contact Person) Sandra Williams
- (Employee) Tommy Hart

Page 40 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
3.6.1.2 TEXT FORMATING

Placeholder template expansion is always done on the server. This means that times, dates and numbers will be
formatted with the server's region/locale setting. This is consistent with M-Files core behavior.

3.6.1.3 ESCAPING SPECIAL CHARACTERS

When an expanded placeholder template will be used as html (for instance in the body of an email notification), it
may be necessary to escape html-significant characters that are present in metadata values resolved from
placeholders to ensure they are displayed correctly.

The placeholder commands ENCODEHTML and ENCODEURL are available by default to escape any significant
characters from expanded placeholder values before inserting them into an expanded text. ENCODEURL would be
used when constructing URLs that have portions dynamically generated.

In some cases, the Compliance Kit assumes a template will be used in an html context (for instance the
M-Files.AdvancedNotifications.BodyTemplate property) and automatically sets all expanded placeholder values to be
html encoded. Use the ENCODENONE command at the end of a placeholder to suppress this behavior.

3.6.2 REFERENCE TREE

Reference trees utilize the placeholder syntax to dynamically point to metadata values which in turn are used to drive
certain module behavior. Their use is comparable to specifying a property reference in a module's configuration, but
by leveraging the placeholder syntax more configuration possibilities emerge; for instance, multiple values and values
in related objects can be resolved from a single placeholder.

3.6.3 DEFAULT PLACEHOLDER COMMANDS

Command (in Placeholder Dialog) Input Output Description

HYPERLINKFRAGMENTHTML* Object Text An HTML formatted hyperlink containing


NameAndLinksHtml() URLs to the object for M-Files Desktop, M-
Files Web, and M-Files Mobile.

HYPERLINKFRAGMENTPLAIN* Object Text A plain-text formatted text fragment


NameAndLinks() containing URLs to the object for M-Files
Desktop, M-Files Web, and M-Files Mobile.

INTERNALID* Object Integer The (internal) ID of the object. The internal ID


InternalID() is always unique for each object of a single
object type and within a single vault (see
also OBJID).

MFILESURL* Object Text An M-Files URL that shows the latest version
Url() of the object in question.

MFILESURLTOVERSION* Object Text An M-Files URL that shows the specific


UrlToVersion() version of the object in question.

MOBILEURL* Object Text M-Files Mobile URL that shows the latest
UrlToLatestMobile() version of the object in question.

Page 41 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Command (in Placeholder Dialog) Input Output Description

MOBILEURLTOVERSION* Object Text M-Files Mobile URL that shows the specific
UrlToVersionMobile() version of the object in question.

OBJID* Object Text The (external) ID of the object (see


ID() also INTERNALID).

OBJTITLE* Object Text The name or title of the object.


ObjTitle()

OBJVER* Object Integer Object version.


Version()

USERCAUSEDWORKFLOWSTATE_State* Object ValueList- The user who moved the object into a
UserCausedState( StateName ) Item specific state. (The parameter is a reference
to a workflow state.)

VAULTNAME* None Text The name of the document vault.


VaultName()

VAULTGUID* None Text The unique identifier (GUID) of the vault.


VaultGuid()

WEBURL* Object Text A URL that shows the latest version of the
UrlToLatestWeb() object in the classic M-Files Web.

WEBURLTOVERSION* Object Text A URL that shows the specific version of the
UrlToVersionWeb() object in the classic M-Files Web.

PROPERTY_Property* Object Text The value of the specified property of the


PropertyName object. (The parameter is a reference to a
property definition.)

OLDPROPERTY_Property * Object Text The old value of the specified property of the
OldProperty( PropertyName ) object. (The parameter is a reference to a
property definition.)

OBJTYPE* Object Text the name of the object type


ObjType()

OBJTYPE_ObjType* Object Text Values of all the properties that can refer to
ObjType( ObjTypeName ) the specified object type. (The parameter is a
reference to an object type)

OBJTYPEID Object Integer The object type id of the object (or value list
ObjTypeID() item). Compare to OBJECTTYPE which returns
the name.

ENCODEHTML Any Text Escapes URI special characters in the text


EncodeHtml() value of the context

ENCODEURL Any Text Escapes URI special characters in the text


EncodeUrl() value of the context

Page 42 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Command (in Placeholder Dialog) Input Output Description

ENCODENONE Any Text Prevents default encoding from occurring.


EncodeNone()

COUNT Any Integer Counts the items in the current context.


Count()

FOREACH Object None Opens a FOREACH block which is closed by


ForEach() the following NEXT placeholder. The text
within the block is expanded separately for
each object in the context.

NEXT None None Closes a FOREACH block.


Next()

PARENT Object Object The owner objects (via the hierarchical


Parent() owner property) of the context objects,
where applicable.

FIRSTVERSION Object Object The first version of the object (version = 1 ) if


FirstVersion() available.

PREVIOUSVERSION Object Object The Previous Version of the object.


PreviousVersion()

RELATEDALL Object Object All objects that either contain at least one of
Related() the context objects in their metadata, or that
are specified in the context objects'
metadata.

RELATEDTO Object Object All objects that are specified in the context
RelatedTo() objects' metadata.

RELATEDFROM Object Object All objects that contain at least one of the
RelatedFrom() context objects in their metadata.

RELATEDALLOBJTYPE_ObjType Object Object Same as RELATEDALL but filters out objects


RelatedAllObjType( ObjTypeName ) that aren't of the specified type. (The
parameter is a reference to an object type)

RELATEDTOOBJTYPE_ObjType Object Object Same as RELATEDTO but filters out objects


RelatedToObjType( ObjTypeName ) that aren't of the specified type. (The
parameter is a reference to an object type)

RELATEDFROMOBJTYPE_ObjType Object Object Same as RELATEDFROM but filters out


RelatedFromObjType( ObjTypeName ) objects that aren't of the specified type. (The
parameter is a reference to an object type)

RELATEDALLCLASS_Class Object Object Same as RELATEDALL but filters out objects


RelatedAllClass( ClassName ) that aren't of the specified class. (The
parameter is a reference to an object class)

RELATEDTOCLASS_Class Object Object Same as RELATEDTO but filters out objects


RealtedToClass( ClassName ) that aren't of the specified class. (The
parameter is a reference to an object class)

Page 43 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Command (in Placeholder Dialog) Input Output Description

RELATEDFROMCLASS_Class Object Object Same as RELATEDFROM but filters out


RelatedFromClass( ClassName ) objects that aren't of the specified class. (The
parameter is a reference to an object class)

OBJIDSTR Object Text Identifiers of all the context objects.


ObjIdString() Format: (<type>-<id>)
Example: (101-40)

OBJVERSTR Object Text Identifiers of all context object versions.


ObjVerString() Format: (<type>-<id>-<version>)
Example: (101-40-10)

FILENAMES Object Text The file names of all context objects.


FileNames()

DAYSUNTIL Date, Integer The number of days from the current date to
DaysUntil() Timestamp the context dates (negative values if context
date is before the current date)

DAYSAGO Date, Integer The number of days before the current date.
DaysAgo() Timestamp (negative values if context date is after the
current date)

MFILESURL_SHOW Object Text An M-Files URL that shows the latest version
UrlToLatestShow() of the object in question. (Alias of
MFILESURL)

MFILESURL_VIEW Object Text An M-Files URL that opens the file of the
UrlToLatestView() latest version of the object in question.

MFILESURL_EDIT Object Text An M-Files URL that opens the file of the
UrlToLatestEdit() latest version of the object in question for
editing.

MFILESURL_METADATA Object Text An M-Files URL that opens the metadata card
UrlToLatestMetadata() for the latest version of the object in
question.

MFILESURLTOVERSION_SHOW Object Text An M-Files URL that shows the specific


UrlToVersionShow() version of the object in question. (Alias of
MFILESURLTOVERSION)

MFILESURLTOVERSION_VIEW Object Text An M-Files URL that opens the file of the
UrlToVersionView() specific version of the object in question.

MFILESURLTOVERSION_METADATA Object Text An M-Files URL that opens the metadata card
UrlToVersionMetadata() for the specific version of the object in
question.

UNIQUE Any Pass- Removes duplicates from the current


Unique() Through context.

TODATE Timestamp Date Converts a timestamp to date, so the text


ToDate() output will not include the time.

Page 44 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
*) M-Files core placeholder.

4 MODULES

Reference implementation of the vault contains example objects, classes and properties that can be used as such. But
the implementation uses these objects via aliases, this allows administrator to create his own customized versions and
by assigning the specified and other configured aliases to them regain the intended functionality.

Chapters below refer to targets using the example object name (=M-Files.Alias.Needed) but include the more
important alias after it, at least in their first appearance.

4.1 ADVANCED NOTIFICATIONS

The advanced notifications module extends the ability to configure automated email notification templates within
M-Files. Notification Rule (=M-Files.AdvancedNotifications.NotificationRule) objects are configured with message
content templates, recipient information, and match criteria in order to enable automated email notifications on a
daily schedule or via event triggers from within the vault. Rule evaluation is triggered when a new object is created, a
new version of an object is created, or when objects are deleted or undeleted.

4.1.1 ASYNC PROCESSING

The advanced notifications module may be configured both at the module or the notification rule scope to process
asynchronously. When a notification rule is processed asynchronously, the application task queue is used in job
processing.

4.1.2 DAILY TASK

The daily check is performed via a scheduled task. The task is created in the advanced notifications task queue and
does not become active until the specified activation date on the task. This value is calculated using the ( current time
+ the time of day ) as defined in the module's configuration. This daily task evaluates the rules again and can thus
generate a second notification for the same object that was matched earlier by a rule during its runtime processing.

The system will try to prevent daily notifications from being sent multiple times in the same day, for instance in cases
where the daily check time is modified, or if the vault is down for a significant amount of time. When processing
normally scheduled daily checks, notification sending will be skipped if the last daily notifications were sent less than 8
hours ago, or if the scheduled task was set to run over 12 hours ago.

To force daily notifications to be sent without modifying the Daily Check Time, they can be triggered manually from
the Send Daily Notifications option in the Advanced Notification module's context menu. Manually triggered tasks are
not subject to time constraints, and will also be processed as soon as possible.

4.1.3 MULTI-SERVER MODE SYNCRONIZATION

Each instance of the M-Files Server runs an instance of the Compliance Kit vault application. Each vault application
instance runs an instance of the Advanced Notification's module. Each Advanced Notification's module instance holds
a cache of the available recipients found inside a vault. This is cached on each instance because fully refreshing the
recipients in a vault could be time consuming in larger environments.

Page 45 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
To prevent the need for a full update to keep the cache in sync, a partial update to the cache is broadcast to all servers
when a change is applied to / processed by any of the servers in the availability group. This ensures that all servers
hold a cache that is in sync with all other servers.

4.1.4 SECURITY

The advanced notifications module uses dynamic resolution via placeholders in order to resolve related lookups and
display values. When using this resolution method, the system restricts access to vault objects using the current
user's session information to determine the access level to an object and its properties. However, when triggered
from the advanced notifications module, the placeholders are resolved as the M-Files server, not the recipient user or
group. This means that the security restrictions normally enforced by M-Files on a per-user basis will not be enforced
when expanding placeholder values.

4.1.4.1 NOTIFICATION RULE / NOTIFICATION GROUP - CREATION AND MODIFICATION

As the ability to create or modify a notification rules and/or notification groups exposes the ability to alter the
recipients / subject / body of the notification message, this effectively makes these objects an entry point for a
potential security hole. For that reason, the creation and modification of notification rule / notification group objects
should be strictly restricted to administrative users.

4.1.4.2 NOTIFICATION LOGS

Notification Log (=M-Files.AdvancedNotifications.NotificationLog) objects contain the information from a triggered


notification: recipient email addresses, subject text, message body text, as well as triggered object and triggered rule
identifiers. Since this information could contain values exposed via an expanded placeholder (not subject to security
restrictions as mentioned above), this object type should also have tightened security restrictions for view access.

4.1.5 RULE EDITOR DASHBOARD

The advanced notifications rule editor dashboard is intended to simplify the rule templating process by providing
integrated editors to assist in editing placeholders and filter conditions.

The dashboard is available only when a single notification rule is selected in the desktop client. A rule editor
command will be made available in the 'View and Modify' task pane command group, from which the dashboard can
be launched.

4.1.6 NOTIFICATION RULE

The Notification Rule (=M-Files.AdvancedNotifications.NotificationRule) object is used to configure a new notification


rule template.

• Name or Title
o Notification Rule name. (Text)
• Enabled
o Enables or disabled the rule. (Boolean)
• Require State Change
o When true, this rule will only trigger if the triggering object's is being moved into a new workflow
state. (Boolean)

Page 46 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Subject ( Template )
o Placeholder template string used to generate the email notification subject. This text accepts valid
placeholders that will be used to extract contextual content from the triggering object. Placeholder
usage is described in section 4.7. (Multiline Text)
• Body ( Template )
o Placeholder template string used to generate the email notification body. This text accepts valid
placeholders that will be used to extract contextual content from the triggering object. All expanded
placeholder values are html-encoded by default (use ENCODENONE to suppress this behavior).
Placeholder usage is described in section 4.7. (Multiline Text)
• Filter Conditions
o This property contains a serialized JSON string representing the search condition filters that must be
met by the triggering object in order to activate this notification rule. (Multiline Text)
• Individual Recipients
o Multiselect lookup property targeting Person objects. Each person specified inside this property will
receive notification email messages from this rule when it is triggered. (Multiselect Lookup)
• Notification Groups
o Multiselect lookup property targeting notification group objects. Each group specified inside this
property will receive notification email messages from this rule when it is triggered. (Multiselect
Lookup)
• External Email Addresses
o Multiline text property used to explicitly specify string email addresses. Email Addresses specified
within this property will use a valid email address and be delimited by a semicolon when specifying
multiple addresses. (Multiline Text)
o Example usage:
▪ user1@example.com; user2@example.com
• Reference Tree (a.k.a. Metadata based recipients)
o This property accepts valid placeholder strings, that resolve the recipient information. The terminal
placeholder value should point to one of the following: User Account Lookup(s), User Group
Lookup(s), Text Email Address, Person Object(s) (attempts to resolve the email address from the
email property on the person object). (Multiline Text)
• Daily Check
o When enabled, this property adds the rule to a list of rules that are checked daily for matching
objects in the vault. Note that this can generate a second notification for an object that has matched
the rule earlier in the day because to the standard rule evaluation. (Boolean)
• Process Async
o When enabled, this rule will be processed asynchronously. (Boolean)
• Max Polling Interval In Seconds
o The max number of seconds that can pass between polling intervals.
• Max Concurrent Batches
o The max number of batches that can be running in the task processor at once.
• Max Concurrent Jobs
o The max number of jobs that can be running within a batch at once.

4.1.6.1 PLACEHOLDER

All placeholder templates and reference trees defined in the Rule object, or module configuration can reference the
Rule object itself with the RULE placeholder command.

Page 47 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Command Type Input Output Description

RULE Simple None Object The current advanced notification rule object.

4.1.7 NOTIFICATION GROUP

The Notification Group (=M-Files.AdvancedNotifications.NotificationGroup) object is the object used to configure a


new notification group, which is a pre-defined collection of notification recipients.

• External Email Addresses


o Multiline text property used to explicitly specify string email addresses. Email addresses specified
within this property will use a valid email address and be delimited by a semicolon when specifying
multiple addresses. (Multiline Text)
o Example usage:
▪ user1@example.com; user2@example.com
• Individual Recipients
o Multiselect lookup property targeting Person objects. Each person specified inside this property will
receive notification email messages from this rule when it is triggered. (Multiline Text)
• User Accounts
o Multiselect lookups collection to user accounts to be used as recipients for this group. (Multiline
Text)
• User Groups
o Multiselect lookups collection to user groups to be used as recipients for this group. (Multiline Text)

4.1.8 NOTIFICATION LOG

The Notification Log objects are an audit trail left by the advanced notification module. Logging can be enabled or
disabled via the modules configuration. When Logging is enabled, a log is generated for each notification that is sent.

• Notification Log Name


o Simple concatenation of values used to generate the title of notification log objects. (Multiline Text)
o Example usage:
▪ %PROPERTY_100% for %PROPERTY_1368%, from %PROPERTY_1367%.
▪ {Class} for {Triggered Rule}, from {Triggered Object}.
• Logged Recipients
o Recipients who were sent the notification. (Multiline Text)
• Logged Subject
o Text from the contextually generated subject of the notification. (Multiline Text)
• Logged Message
o Text from the contextually generated message body of the notification. (Multiline Text)
• Triggering Object
o Title: (<Type>-<ID>-<Version>) - Formatted string of the triggering object. (Text)
• Triggered Rule
o Title: (<Type>-<ID>-<Version>) - Formatted string of the triggered rule. (Text)

Page 48 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.1.9 CONFIGURATION OBJECT

• Enabled
o Enabled or disables the module. (Boolean)
• Taskpane Command Button Caption
o The text label on the task pane button for opening notification rule editor. (Translatable Content)
• Process Async
o When true, all notification rule processing will happen in the background. (Boolean)
• Debug Mode
o Toggles Debug Mode - When true, Logs are always created when a rule is triggered (regardless of
recipient count). (Boolean)
• Enable Logging
o Enabled or disabled logging. (Boolean)
• Caching Enabled
o Enabled or disabled rule filter caching. When enabled, rule filters are cached in memory to improve
module performance. When disabled, rule filters are resolved from the server each time. (Boolean)
• Daily Check Time
o The time of day to run daily checks. Use the 24-hour format "HH:mm:ss". (String)
▪ Examples
• Midnight = "00:00:00"
• Noon = "12:00:00"
• 11:00 PM / 2300 hours = "23:00:00"
• Time Zone
o The time zone for the "Daily Check Time" setting. If you do not set a value for this setting, the time
zone of the server computer is used.. (Option list)
• Include Footer
o Includes or excludes the footer text in all notifications. (Boolean)
• Footer Text
o The footer text to be included in all notifications (when enabled). (Boolean)
o Note that this value accepts valid M-Files Placeholders.
• Max Polling Interval In Seconds
o The max number of seconds that can pass between polling intervals.
• Max Concurrent Jobs
o The max number of jobs that can be running within a batch at once.

4.2 CHANGE REQUEST

Change Request (CR) module extends the controlled versioning by introducing Change Request
(=M-Files.ChangeRequest.ChangeRequest) object type, which are the managed requests behind each new controlled
version and changes to them. All the objects of this type will have Change Request functionality.

Module requires the Version Control (4.17) module to be configured and running.

Page 49 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.2.1 VERSION CONTROLLED CLASSES

Version controlled classes that use the change request mechanism are listed using the
Version Controlled Classes[] string array in the configuration file. The classes listed here must also be
configured in the version controls configuration (4.17.3) as requested by the Version Control module.

There are two keys that can be specified:

• Class
o Identifier of the Version Control class.
• Prevent New Document Creation Without CR
o If true (default), the module will prevent any new documents of the class be created without an
approved Change Request associated with it.
o If false, the document with the specified class can be created without a Change Request. An
approved Change Request needs to be associated with the document before it can be approved or
released.

4.2.2 AUTO FLAGS

Configuration Boolean Auto Complete Child CRs changes the behavior when the user tries to complete a CR

• true
o All child CRs are tried to be completed also. If any of them fails, CR cannot be completed.
• false
o CR cannot be completed if any of the child CRs is open.

Configuration Boolean Auto Approve Child CRs changes the behavior at approving a CR:

• true
o All child CRs are also approved.
• false
O CR cannot be approved if any of the child CRs is not approved.

4.2.3 BRANCH PROPERTY MAPPING

Version Control module uses a SSLU property for storing the branch identifier of a document
(Schemes[].Branch Properties[].Property Def in VC configuration file). Change Request module
needs a MSLU version of that property for the same value list. These two lookup properties are linked together in the
configuration file under the Version Control Branch Mappings[] array.

• Branch Value Property


o SSLU property used by the Version Control.
• Branch Options Property
o MSLU property used by the Change Request.

Only those SSLU properties that are defined in the schemes used by the CR controlled classes are needed to have a
MSLU version.

Page 50 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.2.4 VERSION LEVEL LIST

Change request objects need a property identifying the level of version which it wants, this is defined in
Value Lists[] array in configuration file.

• Value List Property


o SSLU property to the change significance value list.
• Levels[]
o Items of the value list referred by the above property. One for each versioning level of the scheme
used, in same order as specified in 4.17.4.

4.2.5 NEW CONTROLLED DOCUMENT

Change request objects that are created to request a new version of the controlled document are listed in
Classes.New Controlled Document[] array in configuration file. Default implementation includes New
Controlled Document Request (=M-Files.ComplianceKit.NewControlledDocument) class.

Class of this type shall contain the following properties: (see also: 4.2.11)

• Controlled Document (automatically added if not present)


• Target Working Copy (automatically added if not present)
• Change Request Status
• Affected Working Copies
• Affected Released Versions

Object may contain:

• MSLU property to each value list used as a branch identification.

In place of the simple class reference value, these change requests can be specified as objects with additional options.

• Class
o Reference to the class being used. (Same as the simple value, if object notation is not used)
• Auto Complete
o (Optional) Boolean flag. Determines if the approved change request shall be automatically
completed after the Affected Released Versions are released.

4.2.6 NEW WORKING COPY

Change request objects that are created to request a new working copy of the controlled document are listed in
Classes.New Working Copy[] array in the configuration file. Default implementation includes New
Translation Request (=M-Files.ComplianceKit.NewWorkingCopy) class.

Class of this type shall contain the following properties: (see also: 4.2.11)

• Controlled Document (Optional, can be used to filter Target Working Copy)


• Target Working Copy
• Change Request Status
• Affected Working Copies
• Affected Released Versions
• MSLU property to each value list used as a branch identification.

Page 51 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
In place of the simple class reference value, these change requests can be specified as objects with additional options.

• Class
o Reference to the class being used. (Same as the simple value, if object notation is not used)
• Auto Complete
o (Optional) Boolean flag. Determines if the approved change request shall be automatically
completed after the Affected Released Versions are released.

4.2.7 MODIFY CONTROLLED DOCUMENT

Change request objects that are created to request changes to the properties of the controlled document are listed in
Classes.Modify Controlled Document[] array in the configuration file. Default implementation includes
Property Modification Request (=M-Files.ComplianceKit.ModifyControlledDocument) class.

Class of this type shall contain the following properties: (see also: 4.2.11)

• Controlled Document
• Change Request Status
• Affected Released Versions
• (Optional) Target Released Versions

In place of the simple class reference value, these change requests can be specified as objects with additional options.

• Class
o Reference to the class being used. (Same as the simple value, if object notation is not used)
• Use Specific Properties
o (Optional) Boolean flag. Determines if the controlled document collection properties that can be
updated in the CR are determined by the system, or specifically provided by the configuration.
• Specific Properties
o (Optional) a list of properties that can be modified by this Change Request. Only used if the above
option is true.

4.2.8 VERSION WORKING COPY

Change request objects that are created to request a new version of the controlled document are listed in
Classes.Version Working Copy[] array in the configuration file. Default implementation includes New
Version Request (=M-Files.ComplianceKit.VersionWorkingCopy) class.

Class of this type shall contain the following properties: (see also: 4.2.11)

• Controlled Document (Optional, can be used to filter Target Working Copy)


• Target Working Copy
• Change Significance
• Change Request Status
• Affected Working Copies
• Affected Released Versions

In place of the simple class reference value, these change requests can be specified as objects with additional options.

Page 52 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Class
o Reference to the class being used. (Same as the simple value, if object notation is not used)
• Auto Complete
o (Optional) Boolean flag. Determines if the approved change request shall be automatically
completed after the Affected Released Versions are released.

4.2.9 RETIRE CONTROLLED DOCUMENT

Change request objects that are created to request retiring of the controlled document are listed in
Classes.Retire Controlled Document[] array in the configuration file. Default implementation includes
Retire Controlled Document Request (=M-Files.ComplianceKit.RetireControlledDocument) class.

Class of this type shall contain the following properties: (see also: 4.2.11)

• Controlled Document
• Retire Date
• Change Request Status
• Affected Working Copies
• Affected Released Versions

In place of the simple class reference value, these change requests can be specified as objects with additional options.

• Class
o Reference to the class being used. (Same as the simple value, if object notation is not used)
• Auto Complete
o (Optional) Boolean flag. Determines if the approved change request shall be automatically
completed after the Affected Released Versions are retired.

4.2.10 RETIRE WORKING COPY

Change request objects that are created to request retiring of the working copy document are listed in
Classes.Retire Working Copy[] array in the configuration file. Default implementation includes Retire
Translation Request (=M-Files.ComplianceKit.RetireWorkingCopy) class.

Class of this type shall contain the following properties: (see also: 4.2.11)

• Controlled Document (Optional, can be used to filter Target Working Copy)


• Target Working Copy
• Retire Date
• Change Request Status
• Affected Working Copies
• Affected Released Versions

In place of the simple class reference value, these change requests can be specified as objects with additional options.

• Class
o Reference to the class being used. (Same as the simple value, if object notation is not used)
• Auto Complete
O (Optional) Boolean flag. Determines if the approved change request shall be automatically
completed after the Affected Released Versions are retired.

Page 53 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.2.11 PROPERTIES

More details on the properties listed under different kinds of change request objects in the above chapters.

4.2.11.1 CONTROLLED DOCUMENT

The Controlled Document (=M-Files.ChangeRequest.ControlledDocument) is an SSLU property to a controlled


document collections and is used to pinpoint the change requests to specific document collection.

4.2.11.2 TARGET WORKING COPY

The Target Working Copy (=M-Files.ChangeRequest.TargetWorkingCopy) is an SSLU property to one working copy of
the controlled document. This can be filtered using the value of the Controlled document property.

4.2.11.3 TARGET RELEASED VERSIONS

The Target Released Versions (=M-Files.ChangeRequest.TargetReleasedVersions) property is MSLU to released version


documents. Value of this can be set in Modify Controlled document Change Requests to indicate that the changed
properties should also be updated in the specified released versions. This property can only be used if
Disable Property Sync in the Version Control module configuration is set to true.

4.2.11.4 RETIRE DATE

The Retire Date (=M-Files.VersionControl.RetireDate) is date property set into controlled document.

4.2.11.5 CHANGE SIGNIFICANCE

Configurable Change Significance (=M-Files.ComplianceKit.ChangeSignificance) is SSLU property identifying which level


of new version is requested. This is already configured in 4.2.4.

4.2.11.6 CHANGE REQUEST STATUS

State of a change request is stored in the Change Request Status (=M-Files.ChangeRequest.ChangeRequestStatuses)


property that is SSLU to Change Request Statuses (=M-Files.ComplianceKit.ChangeRequestStatuses) value list. The
value list items are not configurable, meaning one cannot change which item triggers which action. Only changes in
the names of the value list items preserve the configuration validity.

The Change Request Status property represents a workflow for the change request and its value is changed via actual
workflow. However, the actual workflows used around the change request are customizable and optional.

Items of the Change Request Statuses value list are as follows:

• In Progress
o Change request can still be edited.
• Approved
o Request is approved.
o Entering this state will perform the change, create the new working copies for example.

Page 54 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Under Revisement
o Change request can again be edited after being at least once approved.
• Cancelled
o Terminal state: Request is cancelled.
o Entering this state will cancel all operations. Not possible if any released versions are already
resulted from this request.
• Completed
o Terminal state: Request is finalized and completed.
o Entering this state in Modify Controlled document (4.2.7) will set the changed properties to
controlled documents.
o Entering this state will complete the request.

These items are used via fixed GUIDs so the list cannot be modified easily.

4.2.11.7 AUTHORIZING CHANGE REQUEST

Documents of CR controlled class (4.2.1) cannot be created without the Authorizing Change Request
(=M-Files.ChangeRequest.AuthorizingChangeRequest) property that is an SSLU to Change Requests object, especially
to a New Controlled Document change request (4.2.5) that is in approved state. All the Working copies with an active
Change Request will have this property automatically added to them.

4.2.11.8 AFFECTED WORKING COPIES

The Affected Working Copies (=M-Files.ChangeRequest.AffectedWorkingCopies) property is MSLU to working copy


documents. Value of this is set by Change Request module to contain all working copies that it created or affected. It
is recommended that the property will be made read-only, as only the system should change its value.

4.2.11.9 AFFECTED RELEASED VERSIONS

The Affected Released Versions (=M-Files.ChangeRequest.AffectedReleasedVersions) property is MSLU to released


version documents. Value of this is set by Change Request module to list the released versions of the affected working
copies. It is recommended that the property will be made read-only, as only the system should change its value.

4.2.11.10 CHILD CHANGE REQUESTS

The Child Change Requests (=M-Files.ChangeRequest.ChildChangeRequests) property is a multi-select or single-select


lookup property to Change Request object. Adding this property to a change request can be used to create hierarchy
of change requests.

4.3 CONTROLLED PRINTING

Controlled Printing module enables creation of controlled prints from documents configured as available and
requiring a controlled print. The module also enables Controlled Save. The Controlled Save is used to save (instead of
directly printing) the selected document as PDF outside the vault with all the overlays and stamps added by the
Controlled Print.

Page 55 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
The print PDF is created by the PDF Processor module, and thus that module needs to be also enabled and correctly
configured for the controlled printing to work. Most importantly the PDF Processor module configuration needs to
include "M-Files.ControlledPrinting.OriginalVersionSpecific" alias in its Created From[] configuration key.

At the top level of the configuration following keys are found:

• Button Group Name


o The name of the Controlled Printing button group in the UI task pane. Translatable content (see
section 3.5).
• Print Button Name
o The name of the button opening Controlled Printing Dashboard. Translatable content (see section
3.5).
• Configuration Rules
o Controlled Print rule array (4.3.1).
• Workflows
o Array of workflows that can be used with a Tracking Item (4.3.2).
• Print Without Dashboard
o Whether the controlled print is created immediately after clicking the Print button without opening
the Controlled Printing dashboard.
o Default: false
• Notification Dialog After Click Print
o Defines whether a notification dialog is displayed when the controlled print menu item is clicked.
o Default: false
• Notification Dialog Title
o The title of the notification dialog. Translatable content (see section 3.5).
• Notification Dialog Body
o The text content of the notification dialog. Translatable content (see section 3.5).
• Enable Controlled Save
o Defines whether the Controlled Save button is shown.
o Default: false
• Save Button Name
o The name of the button for Controlled Save. Translatable content (see section 3.5).

Which documents and to whom the creation is allowed is configured in controlled print rules.

4.3.1 CONTROLLED PRINT RULE

Different controlled print rules are configured under the key Configuration Rules[].

• Rule Name
o Unique name that identifies the configuration rule.
• Rule Display Name
o More descriptive name of the rule. This name string will be shown in UI. Translatable content (see
section 3.5).
• Allowed For
(Optional) Section containing setting for whom the print is allowed. Print is allowed if users is included in any
of the allowed user groups, either configuration listed or in the group properties from the target document,
or if the user is in the users list in the configuration or referenced by any user property in the target
document.

Page 56 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
If this section is missing or contains only empty values for all below keys the printing is allowed for all user.

o User Groups
▪ (Optional) Array of user group identifiers.
▪ Default: Empty list, meaning the access is not restricted.
o Users
▪ (Optional) Array of user identifiers.
▪ Default: Empty list, meaning the access is not restricted.
o User Properties
▪ (Optional) Array of properties that are lookups to users, which when present at the target
document allow printing to those users.
▪ Default: Empty list.
o User Group Properties
▪ (Optional) Array of properties that are lookups to user groups, which when present at the
target document allow printing to members of those user groups.
▪ Default: Empty list.
o User Property Placeholders
▪ (Optional) Array of placeholder strings. Configured placeholder string should evaluate to a
property that is a lookup to user. If evaluated property value matches the current user, a
permission to print is granted.
▪ Default: Empty list.
o User Group Property Placeholders
▪ (Optional) Array of placeholder strings. Configured placeholder string should evaluate to a
property that is a lookup to user group. If evaluated property value matches a group the
current user is a member of, a permission to print is granted.
▪ Default: Empty list.
• Document Matching Conditions
o Array of Search Conditions that must match to a document for this rule to be used. See 3.4 for
details.
• TrackingItem Class
o (Optional) Class to use as tracking item.
o Default: The built-in class is used.
• Tracking Item Workflow
o Guid or an alias to a workflow that should be used with the created Tracking Item. Workflow to be
used must be configured in module configuration's Workflows section.

Page 57 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• PDF Rendition Instruction
o Guid or ObjID of a Document Rendition Instruction that is used to create a controlled print. The
referenced Rendition Instruction must not set printing restrictions to the PDF, and for MFD objects
to work correctly it should also contain Concatenate as yes.
• Keep Printout File
o (Optional) Boolean that defines is the printout PDF kept or deleted after been acknowledged as
printed or failed to print.
o Default: false.
• Doc Properties To Copy
o (Optional) Array of properties that should be copied from the target document to the created
Tracking Item.
o Default: Empty list.

4.3.2 WORKFLOW CONFIGURATION

Different workflows that can be used with a Tracking Item are configured under the key Workflows[]. Before
workflow can be configured to be used with a print configuration rule, it must be defined here.

• Workflow
o Guid or an alias to a workflow.
• Initial State
o Guid or an alias to the initial state of the workflow.
• Available For Printing States
o Array of Guids or aliases to a workflow state where the pdf is created and available for the actual
printing.
• Request Print Transision
o Guid or an alias to a transition after which the workflow is in one of states defined in
AvailableForPrintingStates.
• Print Ok Transitions
o Arrays of Guids or aliases to a transition to confirm the printing successful.
• Print Failed Transitions
o Array of Guids aliases to a transition to mark the printing failed.

4.4 ELECTRONIC SIGNATURE

Electronic Signature module is mostly content only package. Enabling this module before Upgrading the vault will
import the M-Files Electronic Signature object and related properties. The signature is required for example by some
workflow states used by the Version Control module, among others.

4.5 HIERARCHY MANAGER

Hierarchy Manager module enables specifying triggering - triggered -workflow state transition relations between
different objects. Specific workflow state transition on a triggering object triggers state transitions on all objects
matching the module configuration's transition rules.

Page 58 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Hierarchy Manager module also enables specifying rules to prevent certain object state transitions from happening
due to some preventing condition on specific related object.

The module processes work items through a sequential task queue via the application task queue interface for async
tasks. This means that all processing is performed by a single server (even if more than one server is attached to a
single vault in multi-server mode).

At the top level of the configuration following keys are found:

• Failed Transitions Caption


o The name of the button in the UI task pane for opening Failed Transitions Dashboard. Translatable
content (see section 3.5).
• Context Menu Caption
o The name of the context menu item for checking if the object has transition errors, and if it does, for
opening the Failed Transitions Dashboard. Translatable content (see section 3.5).
• Hierarchy Rules
o An array containing all hierarchical workflow transition rules to be followed.
• Max Polling Interval In Seconds
o The maximum number of seconds between polling cycles to fetch new application tasks to be
processed by this module.
• Is Msm Compatible
o Hidden property that designates that the application has been upgraded to be compatible with
multi-server mode.

4.5.1 HIERARCHY RULE

One Hierarchy Rule contains following configuration values:

• Rule Name
o Unique name that identifies the configuration rule.
• Triggering Workflow
o Workflow of the source object subjected to this hierarchy rule.
• Triggering State Transitions
o Array of workflow state transitions of the source object that are subjected to this hierarchy rule.
• Triggering States
o Array of workflow states of the source object that when entered are subjected to this hierarchy rule.
• Acceptable Sibling States
o If Require All Siblings In Acceptable State is enabled for a Transition Rule, this is
the set of Workflow States that the sibling objects must be in for the Transition Rule to occur.
Sibling objects are other objects that are related to the Triggered Object in the same way that the
Triggering Object is related to the Triggered Object. If this feature is used, note that the triggering
object is one of the siblings, and must be in one of these states.
• Prevention Rules
o Array of related object conditions that are used to prevent the triggering state transition from
happening (or prevent an object entering the triggering state).
• Transition Rules
o Array of target object transition rules to be run when the source object state transition matches with
one of the configured Triggering State Transitions or when the source object enters
one of the states defined in Triggering States.

Page 59 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Prevention Rules array contains all rules to prevent source object transition from happening. One Prevention
Rule contains following configuration values:

• Prevention Rule Name


o Unique name that identifies the prevention rule.
• Error Message Text
o Custom error message to be shown to user when the rule prevents the triggering transition.
• Relationship Property Location
o Whether the related objects are pointed by a triggering object property or if the related objects
have a property pointing to the triggering object.
• Relationship Property
o The property that points to the related object. The property can be either on the triggering object or
on the (triggered) object that's matched against the Preventing Conditions.
Relationship Property Location value defines the property location.
• Preventing Conditions
o Array of Search Conditions that when match to a triggered object prevent the triggering object state
transition from happening. See chapter 3.4 for details.

Transition Rules array contains all target object transition to be run. One Transition Rule contains following
configuration values:

• Transition Rule Name


o Unique name that identifies the transition rule.
• Relationship Property Location
o Whether the triggered objects are pointed by a triggering object property or if the triggered objects
have a property pointing to the triggering object.
• Relationship Property
o The property that points to the related object. The property can be either on the triggering object or
on the triggered object. Relationship Property Location value defines the property
location.
• Triggered Object Filters
o Array of Search Conditions that must match to the triggered object for this rule to be used. See 3.4
for details.
• Triggered Object Workflow
o The triggered object workflow.
• Triggered Transitions
o Array of workflow transitions. The first applicable transition is triggered for the target object.
• Require All Siblings In Acceptable State
o The transition is executed only when all siblings of the related source object are in one of the states
defined in Hierarchy Rule's Acceptable Sibling States. Siblings are objects that are related
to the Triggered Object in the same way that the Triggering Object is related to the Triggered Object.
• Process Async
o If set to "true", the transition rule is processed in a background thread (Not blocking the main UI
thread).

Page 60 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.6 LOG EXPORTER

Log Exporter module exports event log entries from the server using export plugins to various external locations. The
Log Exporter allows use of any number of output plugin.

Without the persistent mode (see PersistentRetrySeconds) the export process is stopped when the plugins
report export errors. When that has happened, the process can be restarted with the Restart Export option in the Log
Exporter dashboard in the Compliance Kit Configurations.

The log exporter module processes tasks using a sequential task queue, " M-Files.ComplianceKit.LogExporter".
These tasks will be processed one task at a time on a single "primary server". An export task will remain in progress
until the module is stopped or the restart export button is clicked. This task will continually export tasks to the
configured export locations.

Settings for the Log Exporter module that configure the event export sequence.

• Interval Seconds
o Unsigned integer value, defining the interval how often a block of events is read from the server and
pushed to plugins.
• Max To Export At Once
o (Optional) Unsigned integer value, the maximum length of the id-block to request from the server at
each run with one export call. Default: 2000.
o Suggested range: 1000 - 10000.
• Failure Mail User Group
o (Optional) User group alias. Members of this user group will receive a notification email when the
exporting process is stopped due to too many errors. Default: No mail is sent.
o If Persistent Retry Seconds is set, the process is never stopped and no mail is ever sent.
• Unsure Seconds
o (Optional) Unsigned integer value. Time duration in seconds how long an event IDs which appear to
be skipped are considered still possible and are re-requested from the server. Missing event IDs
older than this are accepted as missing. Default: 600.
• Persistent Retry Seconds
o (Optional) Unsigned integer value, the number of seconds between persistent retries after the initial
three failures. If value > 0 is set, then the export process will never stop trying. Default: 0, Allow
process to fail and stop.

The settings relating to the server event log clearing.

• Min Count To Clear


o (Optional) Unsigned integer value, don’t clear any events until the server has more events than
defined by this value. Default: 2000.
o Note that after each clearing, fewer events can remain. See also Event Count To Keep.
o 0 = Disable clearing completely, only perform the export.
• Event Age To Keep
o (Optional) Unsigned integer value. Number defining the age of an event in minutes that can be
cleared. Any event more recent than this will not be cleared. Default: 1440 (=24h).
o 0 = No limit for the age of the events, all can be cleared.

Page 61 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Event Count To Keep
o (Optional) Unsigned integer value, the number of events that shall always be left at the server.
Default: 1000.
o 0 = No limit for the number of left events, all can be cleared.
• MinTo Clear At Once
o (Optional) Unsigned integer value, the minimum number of events that can be cleared using a single
API call. Default: 500.
• Max To Clear At Once
o (Optional) Unsigned integer value, the maximum number of events that can be cleared using single
API call. Default: 1000.
o The min−max range must be longer than the BlockSize.
o NOTE: The value must be same or larger than the MaxToExportAtOnce.

Other settings.

• Block Size
o (Optional) Unsigned integer value. Internal value. Default: 100. Do not modify.
• Is Msm Compatible
o Hidden property that designates that the application has been upgraded to be compatible with
multi-server mode. Do not modify.
• Config Version
o Hidden configuration value that defines the configuration schema version identifier. Do not modify.

Page 62 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.6.1 EXPORT PROVIDERS

The log exporter module has two built-in export providers. Described in more detail below.

Different export provider plugins are configured in the configuration under the key Export Providers. The
setting is an array, but it can contain at maximum of one instance of each provider type.

• Enabled
o (Optional) Boolean value.
o If true (default): the provider is active and used with the export.
o If false: the provider is not used by the export.
• Provider Type
o The type of the provider:
▪ "Local File Export"
▪ "Azure File Share"
• Azure File Service
o Contains the settings for Azure File Share plugin.
o Only visible when the provider type is "Azure File Share".
• Local File Export
o Contains the settings for Local File Export plugin.
o Only visible when the provider type is "Local File Export".

Note: When not using the "Local File Export" provider, the configuration validation will show the following
warning "There is no export provider plugin that can access the exported log. The Internal Audit Log Viewer
cannot be used." This is not an error; the module and the other used export provider still works. It just means
that the Audit Log Viewer application will be disabled.

4.6.1.1 LOCAL FILE EXPORT

The Local File Export provider exports events to local file system or a share accessible from the server. Configuring this
plugin requires system admin credentials, as it may access the local system.

The Local File Export configuration values are defined below:

• Log Path
o Path to the exported event logs. The export creates a vault-specific sub-folder here.

Page 63 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Mount Location (UNC)
o (Optional) The UNC path used to mount to the drive defined in Log Path.
• Mount Credential: Username
o (Optional) The username used with the mount command.
• Mount Credential: Password
o (Optional) The password used with the mount command.
• Wait for Mount (seconds)
o (Optional) Duration in seconds to wait for the mounting command to finish. Default: 10.
• Max. Events Per Folder
o (Optional) The maximum number of events that can be stored in a single folder. The count limit is
based on event IDs.
o Value 0 (default): Events are exported to folder representing the day.
o Value >0: ID-level folder is created to each day-folder, and at max given number of events are stored
in each of them. If some events from a range were deleted or skipped, the number of events can be
less than the maximum number defined here.
• Add Line Feed
o (Optional) When enabled, a line feed is added after the XML value in each exported file.

4.6.1.2 AZURE FILE SHARE

The Azure File Service export provider is used to export event data to a Microsoft Azure File share.

The Azure File Service export configuration values are defined below:

• Connection String
o The connection string to the storage account. This value can be copied directly from the Azure web
portal.
o This string contains for example: AccountName and AccountKey -parts.
• Share Name
o Specifies the name of the file share.
• Log Directory
o The relative path within the file share location to store the logs.
• Max. Events Per Folder
o (Optional) The maximum number of events that can be stored in a single folder. The count limit is
based on event IDs. Default: 1000.
o Value 0: Events are exported to folder representing the day.
o Value >0: ID-level folder is created to each day-folder, and at max given number of events are stored
in each of them. If some events from a range were deleted or skipped, the number of events can be
less than the maximum number defined here.

Page 64 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.6.2 SECTIONS FOR PREVIOUS VERSIONS

Configurations related content for older versions of Compliance Kit that still can be nice to know, especially if older
version has been in use earlier.

4.6.2.1 UPGRADE FROM REGISTRY TO NAMED VALUE STORAGE ( 2015 → 2018 )

In previous versions of Compliance Kit, for security reasons, the file export was configured in the Windows registry.
However, with the multi-server mode compatible version of Compliance Kit, this is no longer the case. If any of these
windows registry configuration values exist, they will be automatically migrated from the Windows registry to the
module configuration for Local File Export.

Values previously defined in Windows registry will be migrated from the following key:

HKLM\SOFTWARE\Motive\M-Files\<version>\Server\MFServer\VaultOptions\
<vaultGuid>\Application\{58E4F21F-A933-417D-9C9D-DCC7EA170EE3}\LogExporter

Values migrated:

• LogPath
o REG_SZ, the base path for log events.
• MountUNC
o (Optional) REG_SZ, the UNC path of a network share to mount. Default: Empty, no mounting done.
• MountUser
o (Optional) REG_SZ, the username to use when mounting the MountUNC path.
• MountPassword
o (Optional) REG_SZ, the password to use when mounting the MountUNC path.

4.6.2.2 CLOUD VAULT SETTING

This configuration is only valid for the 20.10.911.x-versions. The setting is ignored in later versions.

• IsCloudVault
o Defines which export providers are available.
o Can only be modified by system admin.
o True: (default): Only the Azure File Export provider can be used.
▪ Note: This is not the same as 4.6.1.2 Azure File Share used in the latest version.
o False: Only the Local File Export provider can be used.

Page 65 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.6.3 MULTI-SERVER MODE COMPATIBILITY - AUTOMATIC CONFIGURATION UPGRADE

(20.10.911.3+)
When the IsMsmCompatible property is not present in a configuration, an automatic upgrade of the configuration
is applied every time the configuration is read from the database.

The configuration upgrade adds the IsMsmCompatible property to the configuration and sets its value as "Yes".

For new vaults, you should first import the default configuration by right-clicking the Log Exporter > Configuration
node and selecting "Load Default". The default configuration includes the required IsMsmCompatible /
ConfigVersion properties which allows the configuration to be saved without any automatic updates being
applied to the configuration.

4.6.4 WARNINGS

Beware that changing the file export target location, and or deleting the log files, after the system has been in use can
compromise the compliance.

Long path names are tolerated, but for the system to tag the log event files with the event timestamp requires that
the full path name of the file is less than 260 characters.

Note for M-Files cloud installation: the cloud server does not necessarily have a permanent local file storage. Defining
the LogPath as something in the C: drive would make the Log Exporter happily use that location, but all files written
there WOULD BE LOST. In a cloud, an external file share like Azure File Share should be used.

When using Local File Export in an environment with multiple vaults, care about the LogPath should be used. If using
UNC mounting, the different vaults SHOULD NOT be using the same mount target in their LogPath, the system does
not have any validation against this.

Page 66 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.7 MANAGED PROPERTIES

The Managed Properties module automatically updates objects’ relationships to other existing objects or performs an
Auto Property Calculation.

4.7.1 AUTO CALCULATED PROPERTIES

By adding configuration under Auto Calculated Properties[] array we add the ability to have multiple auto
property calculations available for a single property. This is achieved by providing Filter conditions to ensure the
specified conditions are met before activating the auto calculation.

Note: When specifying static timestamp values, the value configured in the editor will be set as UTC. This value will be
rendered in the MD Card using the local time of the end user. For example, UTC Static value rendered in a -0500 EST
time zone within the client: 01/01/2018 00:00:00 AM (UTC) → 12/31/2017 07:00:00 PM ( -0500 EST ).

• Auto Calculated Properties[]


o Property
▪ The property for which the automatic value is given.
o Calculation Rules[]
Conditional Calculation Rule configuration collection.
▪ Name
• Calculation Rule Name.
▪ Value
• Templated value to be applied to the property.
▪ Value > Mode
• Static value: Use to set a fixed value that the property is always set to.
• Empty value: Sets the property value to null.
• Dynamic value: Use to set a placeholder expression that resolves the correct value
to use when it is being set.
• No action: Leaves the property as it is. Can be used to prevent lower priority rules
from changing the value.
▪ Filters
• The search conditions that must be fulfilled for this automatic value to be
activated.
• The JSON is generated using the GUI Editor.
▪ Priority
• Optional calculation rule priority, used when an object meets the conditions of
multiple Calculation Rules.
• Default: 99.
• When multiple rules match with the same priority, the first rule ( by index order )
from the JSON is used.
▪ Can Add Property
• (Optional) Defines whether the rule can add the property to the object, if not
already present.
• Default: No.

4.7.1.1 UPDATING AUTO-CALCULATED PROPERTIES VIA VAULT EXTENSION METHODS

The Auto Calculated Properties portion of the module has several VaultExtensionMethods that are exposed to allow
for triggering the auto calculation of specific objects, calculation rules, getting the background queue status, and

Page 67 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
canceling jobs. These methods are available via the M-Files API and use the application task queue to perform the
work actions. In addition, the generated status report is created from the tasks found in the application task queue for
this module.

When the need arises to trigger the recalculation of a specific object in the vault, use the UpdateAutomaticProperties
method to trigger the recalculation of all automatic properties for the specified object. Alternatively, recalculation
jobs may also be queued to process for all or a subset of the active auto calculation rules via the
QueueRecalculatePropertyJob method.

As with any queued processing, in addition to adding jobs to the queue, these methods also provide the ability to get
the queue status and cancel queued jobs. These actions are available via the GetPropertyRecalculationJobStatus,
CancelActivePropertyRecalculationJob and CancelAllPropertyRecalculationJobs extension methods, respectively.

See code examples in the subsections below:

4.7.1.1.1 UPDATEAUTOMATICPROPERTIES

/// <summary>
/// Recalculates all automatic properties for the latest version of an object,
/// updating it if necessary.
/// </summary>
/// <param name="objId">Target object of the re-calculation.</param>
private void U p d a t e A u t o m a t i c P r o p e r t i e s ( ObjID objId )
{
// Create the param string.
string paramStr = JsonConvert.SerializeObject( new[]
{
"UpdateAutomaticProperties",
string.Format( "({0}-{1})", objId.Type, objId.ID )
}
);
// Call the vault extension method.
this.v.ExtensionMethodOperations.ExecuteVaultExtensionMethod(
"MFiles.ComplianceKit.MFEventHandlerVaultExtensionMethod",
paramStr );
}

4.7.1.1.2 QUEUERECALCULATEPROPERTYJOB

/// <summary>
/// Finds all objects that contain (or should contain) the property with an
/// auto-calculated value, then recalculates them, and updates each object
/// as necessary.
///
/// Only the rule names specified will be processed, if no rules names are
/// specified, then all rules for the property will be processed.
///
/// Throws an error if the property is already queued.
/// </summary>
/// <param name="propDefReference">PropertyDef to recalculate.</param>
private string Q u e u e R e c a l c u l a t e P r o p e r t y J o b ( object propDefReference )
{
// Create the param string.
string paramStr = JsonConvert.SerializeObject( new[]
{ "QueueRecalculatePropertyJob", propDefReference } );

// Call the vault extension method.


return this.v.ExtensionMethodOperations.ExecuteVaultExtensionMethod(
"MFiles.ComplianceKit.MFEventHandlerVaultExtensionMethod",
paramStr );
}

Page 68 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
/// <summary>
/// Finds all objects that contain (or should contain) the property with
/// an auto-calculated value, then recalculates them, and updates each
/// object as necessary.
///
/// Only the rule names specified will be processed, if no rules names
/// are specified, then all rules for the property will be processed.
///
/// Throws an error if the property is already queued.
/// </summary>
/// <param name="propDefReference">PropertyDef to recalculate.</param>
/// <param name="ruleName">Specific rule to trigger.</param>
private string Q u e u e R e c a l c u l a t e P r o p e r t y J o b B y N a m e (
object propDefReference,
string ruleName )
{
// Create the param string.
string paramStr = JsonConvert.SerializeObject( new[]
{ "QueueRecalculatePropertyJob", propDefReference, ruleName } );

// Call the vault extension method.


return this.v.ExtensionMethodOperations.ExecuteVaultExtensionMethod(
"MFiles.ComplianceKit.MFEventHandlerVaultExtensionMethod",
paramStr );
}

/// <summary>
/// Finds all objects that contain (or should contain) the property with an
/// auto-calculated value, then recalculates them, and updates each object
/// as necessary.
/// Only the rule names specified will be processed, if no rules names are
/// specified, then all rules for the property will be processed.
///
/// Throws an error if the property is already queued.
/// </summary>
/// <param name="propDefReference">PropertyDef to recalculate.</param>
/// <param name="ruleNames">Specific rules to trigger.</param>
private string Q u e u e R e c a l c u l a t e P r o p e r t y J o b s B y N a m e (
object propDefReference,
string[] ruleNames )
{
// Create the param string.
string paramStr = JsonConvert.SerializeObject( new[]
{
"QueueRecalculatePropertyJob",
propDefReference
}.Concat( ruleNames ) );

// Call the extension method.


return this.v.ExtensionMethodOperations.ExecuteVaultExtensionMethod(
"MFiles.ComplianceKit.MFEventHandlerVaultExtensionMethod",
paramStr );
}

4.7.1.1.3 GETPROPERTYRECALCULATIONSTATUS

/// <summary>
/// Returns a simple JSON object describing the queued,
/// active and completed jobs.
/// </summary>
/// <returns><see cref="AppTaskQueueReport"/></returns>
private AppTaskQueueReport G e t P r o p e r t y R e c a l c u l a t i o n J o b S t a t u s ()
{
// Create the param string.
string paramStr = JsonConvert.SerializeObject( new[]
{ "GetPropertyRecalculationJobStatus" } );
// Call the vault extension method.
return JsonConvert.DeserializeObject< AppTaskQueueReport >(
this.v.ExtensionMethodOperations.ExecuteVaultExtensionMethod(
"MFiles.ComplianceKit.MFEventHandlerVaultExtensionMethod",
paramStr ) );
}

Page 69 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.7.1.1.4 CANCELACTIVEPROPERTYRECALCULATIONJOB

/// <summary>
/// Cancels any active job, if another one is queued, it will become active.
/// </summary>
private Task C a n c e l A c t i v e P r o p e r t y R e c a l c u l a t i o n J o b ()
{
// Create the param string.
string paramStr = JsonConvert.SerializeObject( new[]
{ "CancelActivePropertyRecalculationJob" } );

// Call the vault extension method.


this.v.ExtensionMethodOperations.ExecuteVaultExtensionMethod(
"MFiles.ComplianceKit.MFEventHandlerVaultExtensionMethod",
paramStr );
}

4.7.1.1.5 CANCELALLPROPERTYRECALCULATIONJOBS

/// <summary>
/// Cancels the currently active job and all queued jobs.
/// </summary>
private Task C a n c e l A l l P r o p e r t y R e c a l c u l a t i o n J o b s ()
{
// Create the param string.
string paramStr = JsonConvert.SerializeObject( new[]
{ "CancelAllPropertyRecalculationJobs" } );

// Call the vault extension method.


this.v.ExtensionMethodOperations.ExecuteVaultExtensionMethod(
"MFiles.ComplianceKit.MFEventHandlerVaultExtensionMethod",
paramStr );
}

4.7.2 PROPERTIES

In the configuration file, the Properties[] array contains cases of managed property assignments. Each
configured case is separate from each other. To describe the functionality, let’s call a vault object with Managed
Property as host object and the related other objects as targets.

At the check-in of a host object the vault is searched for existing target objects. The search uses the defined
Filter Conditions (if set) and requires that objects have the Reference Property (if set) with relationship
back to the specific host and requiring that the objects have the same values in their Matching Properties (if
set) as the host has. After the search, the host adds the relationships to the found targets to the property defined in
the PropertyDef.

At the check in of a potential target object, all hosts are checked whether their relationships need to be updated to
include or exclude this latest check in.

Most of the mentioned configuration keys are optional. Leaving some specification unset is the same as allowing-all or
ignoring the requirement. Either a Reference Property or some Matching Properties must be set, a
configuration generally uses one or the other.

• Properties
o Object Type
▪ Object type filter defining the host object.
o Class
▪ (Optional) Class filter defining the host. If not specified, all classes of the defined
Object Type are host objects.
o PropertyDef
▪ MSLU property which will be set in the host and contain the found target objects.

Page 70 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o Host Filter Conditions
▪ (Optional) Search Conditions used to find the hosts. If these conditions are not fulfilled, the
object will not be updated by the module.
▪ See Search Condition chapter 3.4 for details.
o Filter Conditions
▪ (Optional) Search Conditions used to find the targets.
▪ See Search Condition chapter 3.4 for details.
o Reference Property
▪ (Optional) Lookup property the target must have and contain a value referring back to the
host.
o Matching Properties
▪ (Optional) List of properties that the host and target must both contain and have the same
values.
▪ Can be specified as alias, GUID, or ID of the property, or as
an object to specify additional information (below).
▪ PropertyDef
• The property which both the host and target must contain and have the same
value.
▪ Multi Select Mode
• (Optional) String value, defining the mode for multi-select lookup properties.
• "Any Found" (default)
o Properties will be treated as a match if any of the lookups are found from
the other property.
• "All Found"
o Properties will be treated as a match only if all lookups can be found from
the other property value. The order of lookups is irrelevant.

4.7.2.1 HIDING OBJECT TITLE FROM ERROR MESSAGES

If the module cannot update the properties of an object, an error message is written to the Windows event log.
Normally, this message contains the title of the object. If you do not want to have the object title in the error
message, go to the Managed Properties configuration in M-Files Admin: expand a vault and select Configurations >
Other Applications > Compliance Kit > Managed Properties > Configuration. Set the value of Hide Object Title from
Error Messages to Yes. If this value is not set, the value of HideObjectTitleFromError in M-Files Named Value Manager
is used.

Page 71 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.8 OBJECT CREATOR

Object Creator module allows new prefilled object creation and complex object copying being configured. These
configurations are called rules. All Object Creator commands are performed to one currently selected object. Each rule
defines a source object to which it can be performed. Each rule also contains instructions for creating new objects,
whether copies or brand-new objects.

When selecting an object in the user interface which matches a specification of a Source Object of some rule, the
related command is shown in the task pane and in the context-menu.

Rules are split into two categories; Copy Rules and Create Rules.

Note: The M-Files standard Make Copy feature is disabled from the UI for all object classes identified by the Copy
Rules. Note 2: The copy rule type or the additional filters are not taken into account by the logic that disables the
default make copy.
Classes which are configured as valid Copy Source will show a dedicated Make Copy command (or user customized
command) in the task pane and in the context-menu.

Copy Source is the object to which the copy is performed to. Copy of a single Copy Source can automatically copy any
number of additional objects that are directly or indirectly related to the Copy Source. Copy of related object can copy
its related objects and recursively onward. Together all the objects that will get copied form the Copy Set. Creation
order of the objects in the Copy Set can be defined. After all copies are created, they are checked-in at the same time.
Each copied object can have a different configuration defining which properties are copied, which are cleared and
which set to something predefined.

Object copied by Copy Rule will get the ACL of the original, while object created by Create Rule will get empty or
default ACL.

4.8.1 OBJECT CREATOR RULE

The different rules are configured under the keys Copy Rules and Create Rules.

Both of those arrays contain blocks which are documented below. Configuration of both types of rules follows the
same syntax and structure. The difference is in which values are required and which ignored for each type. For
example, a Copy rule does not require Command block, while Creation rule does require it, and Create Priority
is ignored by a Create rule. These differences are stated in below sections under each value.

• Key
o String value, "name" of the object and the rule.
o If the Command.Title is not defined, this identifier is shown in the error message if the server
denies the creation.
o Each rule must have a unique value, Create- and Copy-rules cannot use a same key.
• Rule Type
o Type of the rule.
o Only applicable for a Copy Rule. Create Rules will always "Allow Copy and Show Command".
o NOTE: In the Compliance Kit versions 2.4 and earlier, this was defined thru 3 different Boolean
options: AllowCopy, ShowCommand and SilentSkip.

Page 72 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o "Silent Skip":
▪ The matching source is silently ignored and not copied during related object copy. Usable
when only a limited set of related objects need to be copied.
▪ Previously: AllowCopy=any, ShowCommand=any, SilentSkip=true.
o "Prevent Copy":
▪ The matching source cannot be copied, either directly or via related object copy rule.
Exception is thrown if copy is tried. Used to disable the copy of the object.
▪ Previously: AllowCopy=false, ShowCommand=any, SilentSkip=false.
o "Allow Copy":
▪ The matching source can be copied, either directly or via related object copy rule.
▪ Previously: AllowCopy=true, ShowCommand=false, SilentSkip=false.
o "Allow Copy and Show Command":
▪ The matching source can be copied, and a command button is shown in the interface.
▪ Previously: AllowCopy=true, ShowCommand=true, SilentSkip=false.
• Source
o Filters for the object to which this rule and command matches:
o Object Types
▪ Array of object type identifiers (alias, ID, GUID), which this rule applies to.
o Classes
▪ (Optional) Array of object class identifiers (alias, ID, GUID), which this rule applies to.
▪ If unset all classes of the defined object types are matched.
o Workflows
▪ (Optional) Array of workflow identifiers (alias, ID, GUID), which the source object must be
for this rule to apply.
▪ If unset, workflow is not checked.
o States
▪ (Optional) Array of workflow state identifiers (alias, ID, GUID), which the source object must
be for this rule to apply.
▪ If unset, states are not checked.
o Filter Conditions
▪ (Optional) Array of Search Conditions, which all must be true, for this rule to apply.
▪ See Search Condition chapter 3.4 for details.
▪ All checks affect the visibility of the button. Property and Version checks operate with
minimal server roundtrips.
o Allow to Groups
▪ (Optional) Array of user-group identifiers (alias, ID, GUID) to which the command is
allowed.
▪ This value is only checked and used for rules having Show Command true.
▪ If unset or empty array, the access to the command is not restricted.

o Access Object Type


▪ (Optional) Object type identifier (alias, ID, GUID) of the object used as metadata-driven-
access-object.
▪ See also the chapter 4.8.5 below.
o Source to Access Object Property
▪ (Optional) String value.
▪ A placeholder string to a single select lookup property containing the relationship to
defined metadata-driven-access-object from the Source Object. Supports only the
PROPERTY placeholders.

Page 73 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o Allow to Access Object Properties
▪ (Optional) List of single-select user-group lookup property identifiers (alias, ID, GUID) at the
metadata-driven-access-object.
▪ The command is allowed to a user if he is a member of the any of the groups defined in any
of these properties at the related metadata-driven-access-object.
• Command
o Command button configuration block.
Create rule requires this block.
Copy rule will default to use standard looking Make Copy in the View and Modify -section.
o Title
▪ Text shown in the command button. Translatable content (see section 3.5).
▪ Also displayed on possible error messages.
o Panel Group Key
▪ (Optional) String value, the key of one Panel Group entry. See 4.8.2.
▪ The command button will be shown in the defined panel group.
▪ If unset or empty, default location is used.
• Default for copy is View and Modify.
• Default for create is New.
o Icon Type
▪ (Optional) Enumeration of icon type to use with the command.
▪ "None"
• No icon is used.
▪ "Custom Icon"
• See Icon File Path below.
▪ "Default Icon"
• See Default Icon below.
• NOTE: These icons do not show in web-access.
▪ "Compliance Kit Icon"
• See Compliance Kit Icon below.
o Icon File Path
▪ (Optional) String value, the file pathname of an ICO file set to the command button.
▪ This must be relative path, origin is at the M-Files Compliance UI UI-Ext application folder.

• This must be a path relative to the M-Files Compliance UI UI-Ext application folder
within the \Client\Apps directory.
• An example of a relative path is:

o "../{guid-of-ui-extension}/path-within-extension-to-
file.ico"

• An example path of the M-Files Compliance UI-Ext application folder on a


computer with M-Files Desktop installed is:
o C:\Program Files\M-Files\12.0.6531.0\Client\Apps\{17F17160-A915-42C6-
84D6-6817ECA8D42E}\51\{4DB617FA-688D-4D1F-AF31-313DEA59042F}

Page 74 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o Compliance Kit Icon
▪ (Optional) Enumeration value of icons included in the M-Files Compliance UI UI-Ext
application folder.

o
▪ If unset or empty, copy rule will use default copy-icon and create rule will have no icon.
o Default Icon
▪ (Optional) Enumeration value of M-Files build-in icons from the DefaultIcon enumeration.
o Order Priority
▪ (Optional) Integer value, used to order the command button within the group it is, and in
the context menu. Lower values are displayed above higher values.
• Create
o Block of instructions for creating the new object.
o Object Type
▪ Object type identifier (alias, ID, GUID) as which to create the new object.
▪ For copy rules, if unset, the object type of the source object is used.
o Class
▪ (Optional) Class type identifier (alias, ID, GUID) as which to create the new object.
▪ If unset, and the object type is the same as source object, the class of the source object is
used.
o Workflow
▪ (Optional) Workflow identifier to give to the created object.
▪ Value set with this will override the value possibly set via Copy Properties or
Set Properties.
▪ NOTE: See also the Workflow Setting.
o State
▪ (Optional) Workflow State identifier, to set into the created object.
▪ Value set with this will override the value possibly set via Copy Properties or
Set Properties.

Page 75 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o Workflow Setting
▪ Detailed setting on how to set workflow.
▪ "Defined Or Empty"
• Override by setting the workflow defined with Workflow. If the Workflow is
empty, set an empty workflow.
• This is only valid option when the Workflow is not empty.
▪ "No Override"
• Don’t explicitly set to empty or default, instead use the workflow and state coming
from source object with any of the copy methods or set with Set Properties.
▪ "Default Or Empty"
• Set the default workflow defined by the object class. Set to empty workflow if the
class does not define default workflow.
o Enable Template Selection
▪ (Optional) Boolean value.
▪ If true: Template selection window may be shown before the properties window.
▪ If false (default): Template selection shall not be shown.
o Single File
▪ (Optional) Boolean value.
▪ If true: Single file property is set to true.
▪ If false (default): Implying MFD object.
▪ If unset: The value is not modified.
▪ Value set with this will override the value possibly set via Copy Properties or
Set Properties.
o Copy All Properties
▪ Boolean value.
▪ If true (default for copy rule): all properties of the original are taken as base.
• In this mode, the Copy Properties has no effect.
▪ If false (default for create rule): empty set of properties are taken as base.
• In this mode, the Clear Properties or Drop Properties have no effect.
o Add Properties
▪ (Optional) Array of property identifiers, which should be added, with empty/null values, to
the created object.
▪ If the property set already contains the specified property, its value is not updated.
o Copy Properties
▪ (Optional) Array of property identifiers, which values should be copied from the source
object.
▪ If source does not contain a specified property, that will not be added to the target either.
o Clear Properties
▪ (Optional) Array of property identifiers, which values should be cleared.
▪ This will only clear existing values, if a property does not exist it is not added.
▪ NOTE: In the Compliance Kit versions 2.4 and earlier, in Interactive targets this option
removed the property from the object.
o Drop Properties
▪ (Optional) Array of property identifiers, which should be removed from the target object.
▪ NOTE: In the Compliance Kit versions 2.4 and earlier, Interactive targets ignored this
configuration option.

Page 76 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o Set Properties
▪ (Optional) Array of Property Setting (4.8.3) rules. These are set before the object is created.
▪ These rules can contain references to other objects of the Copy Set that are created before
the current one.
o Post Set Properties
▪ (Optional) Array of Property Setting rules, done after all targets are created.
▪ These rules can contain references to all other objects of the Copy Set.
▪ Only applicable for a Copy Rule.

• File Copy Rules


o (Optional) Array of rules for copying contained files.
o If unset or an empty array,
▪ Copy Rule will copy all files of the source object.
▪ Create Rule will drop all files.
o If some rules are defined, and source contains a file with non-configured extension then an
interrupting exception is thrown.
o It's not an error if the source contains no files but there are file copy rules. Use search conditions to
force such a requirement.
o Extensions
▪ (Optional) Array of file extensions this rule applies to. Exact values, no wildcards allowed.
▪ If unset or empty, all extensions match this rule.
▪ If there are rules with extensions and one without, files will prefer to use the rule with the
matching extension if available.
o Mode
▪ If Copy, the files of matching extension are copied to the target.
▪ If Drop, the files of matching extension are dropped / not copied.
o File Source
▪ (Optional) Placeholder format string value, identifying some related object whose files to
take instead of the source object.
▪ NOTE: If any one of the file copy rules in the array contains the FileSource specification,
it will set the source object used by all the file copy rules in the array.

• Related Object Rules


o (Optional) Array of Related Object copying rules, see 4.8.4 for more.
o Only applicable for a Copy Rule.
o Property
▪ Property identifier (alias, ID, GUID) via which the related object needs to be related with.
o Reverse
▪ (Optional) Boolean value.
▪ If true, the relation property is at the related object referencing to this object.
▪ If false (default), the relation property is in this object referencing to the related object.
o Object Type
▪ (Optional) Object type identifier, which the related object must be. Only used for Reverse
relationship.
▪ If unset or empty, related object can be of any object type.
o Class
▪ (Optional) Class identifier, which the related object must be. Only used for Reverse
relationship.
▪ If unset or empty, related object can be of any object class.

Page 77 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o Use Key
▪ (Optional) string value, Key of the rule to use for copying the matching related object.
▪ Note: Even when given, the related source object must also match the object type, class,
workflow and state filters configured in the specified Object Copy Rule.
▪ If unset, the first rule matching targets object type, class, workflow and state filter is used.
o Update Relationship
▪ (Optional) Boolean value.
▪ If true, this related object rule property's value in the copied object is updated or set to
contain a reference to the other copied object. The value of Reverse defines the
relationship direction. This option will make the copied object hierarchy to match the
source objects hierarchy.
▪ If false, the relationship property is not updated. In this mode, all relationship property
management must be done using (Post) Set Properties.

• After Create Show Object


o (Optional) String value specifying which objects property card is shown after the copy process has
finished.
▪ Placeholder format using the copy of Copy Source as the origin.
• Use "%.%" to show the copy of the Copy Source.
• Use "%RULECOPY_{key}%" to refer to another object within the Copy Set.
o NOTE: In the Compliance Kit version 2.3 and earlier, the format was
"%RULECOPY_key%".
• Use show some related object "%PROPERTY_123%", or combination of these both.
o If unset, no property card is shown.
o Only applicable for Copy rule.
o There must only be a single object found with the placeholder value.
• After Create Select Object
o (Optional) String value specifying which object is selected in the UI after copy process has finished.
o Same format as for After Create Show Object.
o Only applicable for Copy rule.
o The object must already be in the View for it to be able to be selected. The module itself does not
do anything to refresh the view.
o There must only be a single object found with the placeholder value.
• After Interactive OK Message
o (Optional) String value specifying text to display in client in a popup after Interactive target is
created. Value shall not contain any double quote or backslash characters.
o Useful as "Please wait" info when objects copied after the interactive one may take some time.
o Unset or empty string will not show any pop-up.
o Only applicable for Copy rule with Interactive true.
o The message is not shown if Open File is set to true.
• After Interactive Cancel Message
o (Optional) String value specifying text to display in client in a popup after Interactive target creation
is discarded. Value shall not contain any double quote or backslash characters.
o Unset or empty string will not show any pop-up.
o Only applicable for Copy rule with Interactive true.

Page 78 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Create Priority
o (Optional) Unsigned integer value used to define the creation priority of this rule when copying the
Copy Set. Lower values are created first. Creation order of rules with a same value is undefined.
o See the Rule Sort Property for the creation priority of objects sharing the same rule.
o Only applicable for Copy Rule.
• Interactive
o (Optional) Boolean value for whether the matching object shall be user editable prior creation.
o NOTE: At maximum, only one object in the Copy Set can have this as true.
o If true, matching source is created first and shown to user for edit before rest of the Copy Set objects
are copied.
o If false (default), matching source is created silently by the server.
o All Create rules are interactive.
• Open File
o (Optional) Boolean value for whether to automatically open the file of the object created as
Interactive, right after closing the metadata window.
o NOTE: The Interactive created document object cannot be automatically checked-in. Thus not
setting this to true for a document it will leave the object checked out.

• Rule Sort Property


o (Optional) Placeholder format string to identify a property which shall contain a value used to define
to creation order of objects sharing this rule.
o Only applicable for Copy Rule.
• Rule Sort Descent
o (Optional) Boolean value. Only applicable when Rule Sort Property is defined.
o If true: Descending order used, larger values created first.
o If false (default): Ascending order used, smaller values created first.
o Only applicable for Copy Rule.
• Rule Sort Empty First
o (Optional) Boolean value. Only applicable when Rule Sort Property is defined.
o If true: Empty, null and missing value objects are created before any object with a value.
o If false (default): Empty, null and missing value objects are created after all others with a value.
o Only applicable for Copy Rule.

4.8.2 PANEL GROUP RULE

Panel groups used by the rules are defined under the key Panel Groups[]. Panel group defines the location for
the command button.

• Key
o String value, identifier of the panel. Creation rules use this value in their Group Key.
o Value must be unique.
• Title
o Text shown as the title of the panel group. Translatable content (see section 3.5).
o Not applicable when Task Pane Group is set to use built-in pane group.
• Order Priority
o (Optional) Integer value, used to define order of the groups in the task pane. Lower values are
placed above higher value groups.
o Not applicable when Task Pane Group is set to use built-in pane group.

Page 79 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Context Menu Location
o (Optional) Value from the MenuLocation Enumeration, defining the context menu location for the
commands.
o If unset, defaults to 21, (MenuLocation_ContextMenu_Top)
• Task Pane Group
o (Optional) Value from the TaskPaneGroup Enumeration, defining the standard task pane group to
use instead of custom one.
o If unset (- Custom Group -), creates a custom group with given Title value.

4.8.3 PROPERTY SETTING

SetProperties[] array contains detailed property setting rules which can set any predefined or dynamic values
to the created object's properties.

• Property
o Property identifier (alias, ID, GUID) which shall be added or set.
• Value
o Value which to set to this property.
o Special formats for dynamic value setting:
▪ Placeholder format: See chapter 3.6 for more details.
• The final property can be any data type.
▪ For Copy rules only:
Extended placeholder format, where the first (or only) indirection level type is RULECOPY,
and its reference is the value of Key of an object copied within this Copy Set. This will refer
to the copied version of the rules object. Key value is case sensitive.
• Examples: "%RULECOPY_{Key}%" and "%RULECOPY_{Key}.PROPERTY_0"
Extended placeholder format, where the first (or only) indirection level type is RULE, and its
reference is the value of Key of an object copied within this Copy Set. This will refer to the
original object of that rule. Key value is case sensitive.
When the Copy Set contains multiple objects with the same RULE, first (undefined) of them
is used as property source.
▪ "%.%"
Refers to the Source Object of this rule to which the creation is done. This can only be used
with Lookup property to set a relationship to this one object.
o Any string, Boolean or numeric value.

Depending on the data type of the target Property, the Value may be handled differently.

- All Types:
o If the value is in the placeholder format, the placeholder format must resolve to a matching type of
property and the property is set accordingly.
- Text or Multiline Text:
o If value is in the placeholder format which resolves to other than text property, then the property is
set to display-value of the resolved property.
o If value is any of the above special formats, the property is set to display-value of the resolved
property.

Page 80 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o If value contains any additional text with the placeholder format, the placeholders are replaced with
resolved property's display-value and value set as such.
▪ Example: "User %PROPERTY_1665.PROPERTY_1026% in division
%PROPERTY_1665.PROPERTY_1349%"
o If value does not contain placeholder format, it is set as it is.
▪ Only for non-Interactive creations: support may be removed.
If the text contains "{0}" this is replaced with the original objects value for this property.
• Example: "Copy of {0}"
- Single or multi-select lookup:
o With the placeholder format value, the resolved property can be a different lookup property than
the target property, but the object type/value-list of those two properties must match.
o If the value is number that is taken as ID value set to the lookup as only value.
o Value can be GUID-formatted string "{12345678-1234-1234-1234-123456789ABC}".
- Multi-select lookup:
o Value may be an array of integer or placeholder, or GUID format values. The target property is set to
all resolved values defined in the array.
o e.g. Value: [ 12, "%PROPERTY_44% ]
- Boolean:
o Value may be given as JSON true/false or with a strings "true"/"false". Value null will set the
property as undefined null value.
- Number:
o Value shall be given as JSON number with or without quotes.
- Date:
o Value shall be given as string in ISO 8061 format such as: "2014-12-24".
- Time:
o Value shall be given as string in ISO 8061 format such as: "20:30:00".
- Timestamp
o Value shall be given as string in ISO 8061 format such as: "2016-05-01T14:37:42.823Z"
- Other types:
o If value is any of the above special formats which resolves to a single property value that fits the
target property, the value is copied.

4.8.4 RELATED OBJECT COPY RULES

Instead of using the same related objects that are at the source, the related objects can also be copied. Objects to be
copied need to have a relationship with the source object via some defined property. If reverse relationship, the
referring objects need also match the possibly given Object Type and Class filters before they get copied.

All related objects that are copied must each have a configured Copy Rule which they fit into, however it is not
necessary to specify the rule using Use Key but it is suggested if the rule is always the same and known. Requesting
related object copy via a property so that the found objects do not fit into any configured copy rule will throw an
interrupting exception.

When related object is copied the relationship-hierarchy is maintained if the Update Relationship of the
Related Object Rule is set. This will only update the specified related object rule property, and not any other possible
relationship properties between the copied objects. If the Update Relationship is not set, then any properties
are NOT automatically updated, but must be updated manually using Post Set Properties or
Set Properties.

Page 81 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.8.5 METADATA-DRIVEN ACCESS CONFIGURATION

In addition to the Allow To Groups check, the availability may be configured to be dependent on the user groups
defined in a related object. These both user group checks operate separately, if both are configured, both must be
passed for the command to be available.
Limitation: New access objects and changes to user group properties in them are not visible to a client before the
client re-initializes by re-entering or re-login into the vault. Creation always checks the latest situation so not-allowed
actions cannot be performed, but the client may show buttons incorrectly after such object changes.

Use case example:

- The command should be available for the CR object, to a user which belongs to same control site as the CR.
- The CR has a relationship to a Control Site object.
- The Control Site object contains a relationship to User Group of the specific control site.
- The user is a member of some specific control site defined user group.

In this example:

- Access Object Type would be object type of the Control Site.


- Source To Access Object Property would be the lookup property containing a reference to the
Control Site object at the Source (CR).
- Allow To Access Object Properties array would contain the identification of the property or
properties at the Control Site object which contain the relationship to the User Group to whom the command
should be allowed.

4.8.6 WARNINGS

Extra care must be used to create configuration, since the Verify Vault Structure test does not verify issues like:

- Copy Rule exists for all requested related objects.


- Use Key values refer to rules that have a source specification which matches the actual object.
- Type compatibility of properties set.

Error from bad configuration is got when the copy is performed.

Limitations

- The document object created or copied in the client (as Interactive:true) cannot be checked in automatically.
Semi-automatically after closing the file which was opened automatically or then manually selecting check in
for the created object.
o If the Copy Set contains this kind of object, it can only be the only one, as the copy-sequence will not
continue after creating an unchecked-in target.
- Non-document object type object created or copied in the client (as Interactive:true) which "Can contain
files" and does, will always be auto-checked-in.
- (Post)SetProperties can only set relationships between created objects using %RULECOPY_{key}% format
which sees all the objects created with one rule equally, and can only set MSLU to point to them all.
o See UpdateRelationship-option in Related Object Rules (4.8.4) to see automatic option.
- Object Creator copy rules disable the M-Files standard Make Copy feature for matching objects. Matching
does not, however, use the filters or the workflow conditions of the rule. For example, a rule for documents

Page 82 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
within a specific workflow state or with some very limited property conditions does disable the Make Copy
feature for all document objects.

Note

- User who has no permission to create objects of the class X, do not get the option to perform the
copy/create-action which is configured to create and object of the class X, regardless of whether the user has
the permission to create object of another class of the same object type, and could change the class in the
interactive creation window.

Page 83 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.9 PDF PROCESSOR

PDF Processor module provides methods for converting documents to PDFs (4.9.6), for creating object metadata
based rendition PDFs (4.9.3, 4.9.4), and for applying concatenations, overlay effects and digital signatures to the
results.

PDF Processing occurs asynchronously. During this process the object being processed is checked out to M-Files
Server. Each async task is processed via the application task queue. When more than one server is connected to a
single vault in multi-server mode, each server can serve as a worker machine to assist in processing tasks.

PDF Processing can additionally be requested with Extension Method call without the need to have the Rendition
Instruction object to have any relationship with the source object. Such processing will be performed synchronously.
MFiles.ComplianceKit.MFEventHandlerVaultExtensionMethod with three arguments:

• Name of the method:


o "PDFProcessor.GenerateRendition"
• Identification of the source-object using ObjVer string:
o "(0-0-0)"
• Identification of the PDF Rendition Instruction-object using ObjVer string.
Note, the latest version of this object will be used instead of the one specified.
o "(119-3-1)"

Addition to the above, the configured custom renditions (4.9.11) can also be requested to be created without the
need of the Custom Rendition (4.9.7) object. This is done using the same Extension method call but using the following
three arguments:

• Name of the method:


o "PDFProcessor.GenerateRendition"
• Identification of the source-object using ObjVer string:
o "(0-0-0)"
• Key of the requested rendition:
o "Key"

4.9.1 STRUCTURE FREE MODE

PDF Processor can also be placed into a special and simplified structure free mode. This is done by defining the
Structure Free key in the configuration as true. When in this mode:

- All automatic event handler PDF processing is disabled.


- PDF Processor does not require any related vault structure.
- Synchronous creation of Custom Renditions (4.9.7) can still be requested using the above Extension method.
o The Custom Renditions should not use any PDF Rendition Instruction objects even if the vault would
include their valid structure and contain matching objects.

Page 84 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.9.2 COMMON METADATA FOR ALL PDF RENDITION INSTRUCTIONS

All PDF Rendition Instruction objects may contain references to other rendition instruction objects, whose results are
appended or prepended to the produced report. If the processing of a single referred rendition instruction object
produces multiple result files, they are concatenated together before appending or prepending them to the main PDF
file.

All rendition instruction objects can contain overlays and digital certificates that are applied to the file after the
prepending or appending reports are joined to the main file.

• Prepending Instructions (=M-Files.PdfProcessor.PrependingInstructions)


o MSLU to PDF Rendition Instruction.
o (Optional) Defines the sub-renditions to prepend to the beginning of the result rendition.
• Appending Instructions (=M-Files.PdfProcessor.AppendingInstructions)
o MSLU to PDF Rendition Instruction.
o (Optional) Defines the sub-rendition to append to the end of the result rendition.
• Stamps (=M-Files.PdfProcessor.Overlays)
o MSLU to Overlay. (see:4.9.10)
o (Optional) Defines the overlays to use.
• Digital Certificate (=M-Files.PdfProcessor.DigitalCertificate)
o SSLU to document of class Digital Certificate. (see: 4.9.9)
o (Optional) Certificate to embed into the PDF.
o NOTE: All concatenation processes will remove all certificates from the source files. The
certificate defined by the first (main) rendition instruction will remain in the target PDF.
• Workflows (=M-Files.PdfProcessor.RenditionInstructionWorkflows)
o MSLU to Workflows.
o (Optional) If set, limits the processing to run only when the source object belongs to any of the
specified workflows. If States are set those have precedence.
• States (=M-Files.PdfProcessor.RenditionInstructionStates)
o MSLU to States.
o (Optional) If set, limits the processing to run only when source object is any of the specified
workflow states.
• Require State Change (=M-Files.PdfProcessor.RequireStateChange)
o Boolean flag.
o (Optional) If set as true, limits the processing to run only when the source object workflow state
is changed. If value is missing, empty or false, the processing occurs at each commit.
o The optional Workflows and States limits apply independent of this configuration value.
o The first version of the object is seen as changed state.
• Create Into (=M-Files.PdfProcessor.CreateInto)
o SSLU to PDF Create Targets.
▪ Source // Default for Document Rendition Instruction
• The created PDF(s) are uploaded into the source object. Replacing possible
original file, or a file with a matching name and extension.
▪ External // Default for all other Rendition Instructions.
• External object is created for the PDF(s) or updated if one already present.
o (Optional) If set, specifies the object where the created PDF is uploaded into.

Page 85 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Output Class (=M-Files.PdfProcessor.OutputClass)
o SSLU to all Classes.
o Specifies the class the resulting rendition is created as.
o Required when Create Into is 'External'.
o Not applicable when Create Into is 'Source'.
• Properties To Copy (=M-Files.PdfProcessor.PropertyCopy)
o String value.
o (Optional) Comma separated list of properties (alias, guid, id) that are copied from the source
object to the created rendition object.
▪ Specified properties which the source object does not have are silently skipped.
▪ All specified properties which the source object has are added to the rendition object.
▪ Special value "Required" is a shortcut meaning all the properties which the output class
specifies as a required.
▪ Property copy is performed when the external rendition object is created and when it is
updated.
o Not applicable when the rendition is uploaded into the source object (Create Into is 'Source').
• Max Polling Interval In Seconds
o The max time in seconds that can pass before a polling cycle is ran for this module's task queue.
• Max Number Of Concurrent PDF Processors
o The maximum number of parallel pdf processing batches.
• Max Number Of Concurrent PDF Processor Tasks
o The maximum number of parallel pdf processing tasks per batch.

Common properties affecting the properties of the created PDFs:

• PDF Author (=M-Files.PdfProcessor.PdfMetaAuthor)


o String value accepting Placeholder Format text.
o (Optional) The given text is set into Author field in the PDF file metadata. (Not the M-Files
metadata)
o Default: No value set or in document rendition case, the Author value of source document.
• PDF Keywords (=M-Files.PdfProcessor.PdfMetaKeywords)
o String value accepting Placeholder Format text.
o (Optional) The given text is set into Keywords field in the PDF file metadata. (Not the M-Files
metadata)
o Default: No value set.
• PDF Subject (=M-Files.PdfProcessor.PdfMetaSubject)
o String value accepting Placeholder Format text.
o (Optional) The given text is set into Subject field in the PDF file metadata. (Not the M-Files
metadata)
o Default: No value set.
• PDF Title (=M-Files.PdfProcessor.PdfMetaTitle)
o String value accepting Placeholder Format text.
o (Optional) The given text is set into Title field in the PDF file metadata. (Not the M-Files
metadata)
o Default: No value set.
• PDF Customs (=M-Files.PdfProcessor.PdfMetaCustom1, M-Files.PdfProcessor.PdfMetaCustom2, M-
Files.PdfProcessor.PdfMetaCustom3)
o String values accepting Placeholder Format text.

Page 86 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o (Optional) Custom properties are freeform Name-Value pairs, the name of the M-Files property is
used as a Name and the given value is the value set as custom PDF property. Avoid using
properties with names "Author", "Keywords", "Subject" and "Title" as these custom properties, as
those will collide with the other dedicated properties.
o Default: No custom properties set.
• PDF Version (=M-Files.PdfProcessor.PDFVersion)
o SSLU to PDF Versions.
▪ A-1a, A-1b, A-2a, A-2b, A-3b, 1.3, 1.4, 1.5, 1.6, 1.7, X-1a, X-32
o (Optional) If set, specifies the version format the PDF is created as.
o Default: 1.4
o NOTE: A-? -versions do not work well with limited PDF Privileges, may result to rendition failure.
• PDF Restrictions (=M-Files.PdfProcessor.Privileges)
o MSLU to PDF Restrictions.
▪ Restrict All
▪ Restrict Assembly
▪ Restrict Copy
▪ Restrict Printing // Disallows all printing.
▪ Restrict Annotations
▪ Restrict Modifications
▪ Restrict Hi-Res Printing
▪ Restrict Screen Readers
o (Optional) If set, specifies the restricted actions for the created PDF. Restricting any action will
cause the PDF to be encrypted.
o Default: Allow all.
• Fast Web View (=M-Files.PdfProcessor.FastWebView)
o Boolean flag.
o (Optional) If set, specifies whether the created PDF is linearized aka optimized for Fast Web View.
o Default: No Fast Web View.
• Open Fit Mode (=M-Files.PdfProcessor.OpenFit)
o SSLU to Fit Modes.
▪ Fit Page
▪ Fit Width
▪ Fit Height
▪ Set Zoom (%)
o (Optional) If set, specifies the zoom fit setting the PDF viewer should use when opening the PDF.
(see also Open Zoom)
o Default: Viewer dependent, most likely Fit Width.
o The viewer application may or may not follow this setting.
• Open Zoom (%) (=M-Files.PdfProcessor.OpenZoom)
o Unsigned integer value.
o (Optional) If set, specifies the zoom percentage value the PDF viewer should use when opening
the PDF.
o Default: 100.
o Only applicable when the Open Fit Mode is set to 'Set Zoom (%)'.
o The viewer application may or may not follow this setting.

2
X-3 format is not currently supported.

Page 87 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Open To Page (=M-Files.PdfProcessor.OpenToPage)
o Unsigned integer value.
o (Optional) If set, specifies the page number the PDF viewer should default to show first when
opening the PDF. If the value is larger than the number of pages in PDF the last page is shown.
NOTE: Affects also the M-Files preview tab.
o Default: 1
o The viewer application may or may not follow this setting.

4.9.3 METADATA RENDITION INSTRUCTION

The PDF Processor Module introduces a class Metadata Rendition Instruction


(=M-Files.PdfProcessor.MetadataRenditionInstruction) that creates a PDF rendition from the metadata of the source
object. The result rendition is updated each time the object is changed.

Metadata Rendition Instruction uses the following properties, in addition of the properties common with all rendition
instructions:

• XML Process Depth, Direct (=M-Files.PdfProcessor.XMLDepthDirect)


o Unsigned integer value.
o (Optional) XML processing depth, maximum level where to follow direct relations.
o Default: 0 = no direct relations are followed.
• XML Process Depth, Indirect (=M-Files.PdfProcessor.XMLDepthIndirect)
o Unsigned integer value.
o (Optional) XML processing depth, maximum level where to follow indirect (reverse) relations.
o Default: 0 = no indirect relations are followed.
• XML Process Whitelist, Direct (=M-Files.PdfProcessor.XMLWhitelistDirect)
o String value.
o (Optional) If set, comma separated list of lookup properties (alias, guid, id) that are followed
when collecting directly related objects.
o Default: If unset, relations using all properties can be followed.
• XML Process Whitelist, Indirect (=M-Files.PdfProcessor.XMLWhitelistIndirect)
o String value.
o (Optional) If set, comma separated list of lookup properties (alias, guid, id) that are followed
when collecting indirectly related objects.
o Default: If unset, relations using all properties can be followed.
• XML Process Blacklist, Direct (=M-Files.PdfProcessor.XMLBlacklistDirect)
o String value.
o (Optional) If set, comma separated list of lookup properties (alias, quid, id) that are not followed
when collecting directly related objects. Only applicable if corresponding whitelist value is not
specified or is empty.
o Default: If unset, relations using all properties can be followed.
• XML Process Blacklist, Indirect (=M-Files.PdfProcessor.XMLBlacklistIndirect)
o String value.
o (Optional) If set, comma separated list of lookup properties (alias, id) that are not followed when
collecting indirectly related objects. Only applicable if corresponding whitelist value is not
specified or is empty.
o Default: If unset, relations using all properties can be followed.

Page 88 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Store Into Vault (=M-Files.PdfProcessor.StoreIntoVault)
o Boolean value.
o (Optional) Value specifying whether the created rendition shall be stored into vault. Only
applicable when generating the rendition via Vault Extension method.
o Default: true.
• Supporting Instructions (=M-Files.PdfProcessor.SupportingInstructions)
o MSLU to Metadata Rendition Instruction.
o (Optional) Value specifying additional standalone configurations. See chapter "Supporting
Rendition Instructions" in reference document "PDF Processor Functional Description.doc".

4.9.4 METADATA RENDITION INSTRUCTION FOR MULTIPLE OBJECTS

Module introduces a class Metadata Rendition Instruction for Multiple Objects


(=M-Files.PdfProcessor.MetadataRenditionInstructionForMultipleObjects) that can create a PDF rendition from the
source objects metadata, like the Metadata Rendition Instruction, but can produce multiple separate renditions, one
for each included value of specified merge property.

Use case example: Create a separate course certificate document for each participant of a single course.

Metadata Rendition Instruction for Multiple Objects class shall contain the following properties, in addition of the
properties common with all rendition instructions:

• Merge Property (=M-Files.PdfProcessor.MergeProperty)


o Text field property
o The alias of the property to read from the source object.
o The alias must be for a property that points to other objects (not value list items).
• XML Process Depth, Direct (=M-Files.PdfProcessor.XMLDepthDirect)
o Unsigned integer value.
o (Optional) XML processing depth, maximum level where to follow direct relations.
o If unset, no direct relations are followed.
• XML Process Depth, Indirect (=M-Files.PdfProcessor.XMLDepthIndirect)
o Unsigned integer value.
o (Optional) XML processing depth, maximum level where to follow indirect (reverse) relations.
o If unset, no indirect relations are followed.
• XML Process Whitelist, Direct (=M-Files.PdfProcessor.XMLWhitelistDirect)
o String value.
o (Optional) If set, comma separated list of lookup properties (alias, guid, id) that are followed
when collecting directly related objects. If unset, relations using all properties are followed.
• XML Process Whitelist, Indirect (=M-Files.PdfProcessor.XMLWhitelistIndirect)
o String value.
o (Optional) If set, comma separated list of lookup properties (alias, guid, id) that are followed
when collecting indirectly related objects. If unset, relations using all properties are followed.
• XML Process Blacklist, Direct (=M-Files.PdfProcessor.XMLBlacklistDirect)
o String value.
o (Optional) If set, comma separated list of lookup properties (alias, quid, id) that are not followed
when collecting directly related objects. Only applicable if corresponding whitelist value is not
specified or is empty.

Page 89 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• XML Process Blacklist, Indirect (=M-Files.PdfProcessor.XMLBlacklistIndirect)
o String value.
o (Optional) If set, comma separated list of lookup properties (alias, id) that are not followed when
collecting indirectly related objects. Only applicable if corresponding whitelist value is not
specified or is empty.
• Supporting Instructions (=M-Files.PdfProcessor.SupportingInstructions)
o MSLU to Metadta Rendition Instruction.
o (Optional) Value specifying additional standalone configurations. See chapter "Supporting
Rendition Instructions" in reference document "PDF Processor Functional Description.doc".

4.9.5 METADATA RENDITIONS

The metadata renditions (by Metadata Rendition Instruction and Metadata Rendition Instruction for Multiple Objects)
are created by performing an XSL transformation to the source object property XML, and further processing the
resulting XML into the PDF.

Each rendition instruction collects its own copy of source object properties, using the collection depths and followed
properties configurations that are set at the instruction object.

The transformation XML file must be an .xslt-file in the instruction object. One and only one file with .xslt extension
shall be present at one instruction. Additional image files can be included. If secondary xslt files were needed, those
need to have a different file extension. The transformation shall produce an xml file that Aspose library accepts.

4.9.6 DOCUMENT RENDITION INSTRUCTION

Module introduces a class Document Rendition Instruction (=M-Files.PdfProcessor.DocumentRenditionInstruction) that


can convert the source documents to PDF at the object check-in or at specified workflow state change.

In the addition of the common properties, the Document Rendition Instruction class contains the following properties:

• Concatenate (=M-Files.PdfProcessor.FileConcatenation)
o Boolean value.
o (Optional) If set as true, will create only single concatenated PDF file if multiple source files is
being converted. Value has no effect when only one source file.
o Default: false.
• Header Levels Into PDF Bookmarks (=M-Files.PdfProcessor.HeaderOutlineLevel)
o Unsigned integer value.
o (Optional) If set, specifies the number of Word document header levels that are converted into
PDF bookmarks.
o Default: 0 = Word headers are not converted at all.
o Only effective with MS Office Word document source files.
• Bookmarks As PDF Bookmark Level (=M-Files.PdfProcessor.BookmarkOutlineLevel)
o Unsigned integer value.
o (Optional) If set, specifies the PDF bookmark level that the Word bookmarks are converted into.
o Default: 0 = Word bookmarks are not converted at all.
o Only effective with MS Office Word document source files.
• Include Comments (=M-Files.PdfProcessor.RenderComments)
o Boolean flag.

Page 90 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o (Optional) If set to true, includes Word document comments into the created PDF.
o Default: false.
o Only effective with MS Office Word document source files.
• Markup Display (=M-Files.PdfProcessor.MarkupDisplay)
o SSLU to Markup Displays.
▪ No Markup
▪ Simple Markup
▪ All Markup
▪ Original
o (Optional) Defines how the tracked changes markup is included into the created PDF.
o Default: No Markup.
o Only effective with MS Office Word document source files.
• Include Tracked Changes (=M-Files.PdfProcessor.RenderEdits)
o Boolean flag.
o NOTE: Deprecated property, remove this from the instructions and use Markup Display instead.
▪ Value True is equal with All Markup -selection.
▪ Value False is equal with No Markup -selection.
▪ If Markup Display has a value set, this property is ignored.
o (Optional) If set to true, includes the tracked changes markup into the created PDF.
o Default: false.
o Only effective with MS Office Word document source files.

The document to be converted using the Document Rendition Instruction can also reside outside of the source object
itself. If the source object contains any of the properties defined in CreatedFrom[] array, which should be SSLU to
document object, the document from the referred object is converted instead.

4.9.6.1 SUPPORTED SOURCE DOCUMENT FORMATS

The document rendition conversion supports a limited set of file types. Following file extensions are currently
supported: (the list is subject to change)

• doc, docx, eml, emlx, msg, mht, mhtml, pdf, ppt, pptx, rtf, txt, vsd, vsdx, xls, xlsm, xlsx, xml, xslt.
• bmp, gif, jpg, jpeg, png, tif, tiff.

Multi-frame (animated) gif's are not supported. Multi-frame tiff's each frame is rendered as a separate page.

M-Files properties inserted into Microsoft Office Word and Excel files, will be rendered as their latest values into the
created PDF. Before the December '21 update the ID-property was always updated to the value of the internal id of
the object. The December '21 update changed the default functionality to use the external id if the object has one.
This matches how the PDF conversion in the workflow state action does it. If the old functionality is still preferred,
that can be returned by adding the following value to the configuration: "ShowIdAlwaysAsInternalId":
true

4.9.7 CUSTOM RENDITION INSTRUCTION

Module introduces a class Custom Rendition Instruction (=M-Files.PdfProcessor.CustomRenditionInstruction) which can


create more complex "combo" renditions but can be used the same way as the other rendition instruction classes. See
the chapter 4.9.11 for more.

Page 91 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
In the addition of the common properties, the Custom Rendition Instruction shall contain the following properties:

• Custom Rendition Key (=M-Files.PdfProcessor.CustomRenditionKey)


o String value, Key of the rendition configuration to perform. See 4.9.11.
o The match is case sensitive.

Extra notes:

• Output Class (=M-Files.PdfProcessor.OutputClass) property value set to the instruction object will override
the Output Class value set in the configuration.
• Create Into (=M-Files.PdfProcessor.) property value set to the instruction object will override
Inplace File Replace value set in the configuration.

4.9.8 SOURCE LINKING

All PDF Rendition Instructions can be linked to the source object in two ways:

• Directly.
o The source object links to processing instruction directly using the any lookup property
configured in Instruction References[].
• Via intermediate object behind a reference property.
o The source object contains any of the properties configured in Reference Properties[]
array in configuration file. And the object referenced using that property links to processing
instruction using a lookup property configured in Instruction References[].
o Note: Configure ReferenceProperties[] carefully as object types targeted with these
properties cannot be processed with PDF Processor.

4.9.9 DIGITAL CERTIFICATES

The created PDF can be embedded with a certificate taken from referenced Digital Certificate
(=M-Files.PdfProcessor.DigitalCertificate) class object that shall contain a .pfx-file document.

In addition to the file, the Digital Certificate class must include the following properties:

• Location (=M-Files.PdfProcessor.DigitalCertificateLocation)
o Text field property.
o Ex. "Signed in Tampere".
• Reason For Certificate (=M-Files.PdfProcessor.DigitalCertificateReason)
o Multi-line text property.
o Reason for applying the certificate.
• Password (=M-Files.PdfProcessor.DigitalCertificatePassword)
o Text field property.
O Password required to unlock the pfx-file.

Page 92 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.9.10 OVERLAYS

Possible Overlay (=M-Files.PdfProcessor.Overlay) types and their required properties:

• Overlay (=M-Files.PdfProcessor.Overlay)
o Pre-specified composite object type containing any combination of the overlay types.
o Properties:
▪ Stamps (=M-Files.PdfProcessor.Overlays)
• MSLU to Overlay
• References the other included overlay objects.
▪ Other common properties: On Background, Pages
• Dynamic Image (=M-Files.PdfProcessor.DynamicImageStamp)
o Overlay with any image (.jpg, .png, .tif, ?) in the vault.
o Properties:
▪ Reference Tree (=M-Files.PdfProcessor.ReferenceTree)
• Text (multi-line), Contains an M-Files Placeholder chain that resolves to a valid object
containing an image in the vault.
• Functionality: From the triggering object, Direct References are used to resolve a single
related object containing an image file. The Reference Tree is the resolution map.
o The Reference Tree is chainable, meaning that the image to resolve and the
triggering object can have one too many (1..*) references between them.
▪ Example: Triggering Object → Department → Supervisor → Signature
▪ Translation: Document → Department → Person → Image
▪ Reference Tree:
%PROPERTY_{Department}.PROPERTY_{Supervisor}.PROPERTY_1234
%
▪ Explanation:
• From the Triggering Object
o Resolve related Department Object, using the
property with alias = “Department”
• From the resolved Department
o Resolve related Person Object, using the property
with alias = “Supervisor”
• From the resolved Person Object, using the property with ID
= 1234
o Resolve the related image file. As this is the last
reference in the tree, this object should be an
image file or contain an image file.
• Intended configuration:
o The references used should resolve to a single object containing a file to be
used as the image stamp.
o Multi-select references are supported, but discouraged as there should be a
single reference in the property (otherwise the first item in the multi-select is
used).
o The last reference in the tree should be the image file or an object containing
the image file to be used as the image stamp.

Page 93 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Valid Syntax:
o M-Files Placeholder Samples:
▪ ID Syntax - %PROPERTY_1234%
▪ Alias Syntax - %PROPERTY_{Department}%
o Chained hybrid syntax sample:
▪ %PROPERTY_1234.PROPERTY{Person}.PROPERTY_{Signature}%
▪ Common position properties: Vertical Alignment, Horizontal Alignment, Vertical Position,
Horizontal Position, Rotation (degrees)
▪ Other common properties: On Background, Pages
• Image (=M-Files.PdfProcessor.ImageStamp)
o Overlay with any image (.jpg, .png, .tif, ?) in the vault.
o Properties:
▪ Overlay Image (=M-Files.PdfProcessor.OverlayImage)
• SSLU to document objects in the vault, image files.
▪ Common position properties: Vertical Alignment, Horizontal Alignment, Vertical Position,
Horizontal Position, Rotation (degrees)
▪ Other common properties: On Background, Pages
• Page Number (=M-Files.PdfProcessor.PageNumberStamp)
o Overlay with text with a page number.
o Properties:
▪ Page Number Format (=M-Files.PdfProcessor.PageNumberFormat)
• Text field property.
• The format string with up to two placeholders: {0} {1}
o 0 = current page.
o 1 = total page count.
• Can include property tags like: %PROPERTY_25%
▪ Common position properties: Vertical Alignment, Horizontal Alignment, Vertical Position,
Horizontal Position, Rotation (degrees)
▪ Common font properties: Font, Font-size, Font-color
▪ Other common properties: On Background, Pages
• Text Field (=M-Files.PdfProcessor.TextStamp)
o Overlay with any static text.
o Properties:
▪ Overlay text (=M-Files.PdfProcessor.OverlayText)
• Multi-line text field property.
• Can include property tags.
▪ Max Length (=M-Files.PdfProcessor.MaxLength)
• Integer value.
• (Optional) Defines the maximum character count for the overlay text. All content
beyond the specified length is simply lost.
• Default: 0 = Text is not cut at all.
• Values less than zero are ignored. The default value is used.
• White space and control characters (such as new line, carriage return) are included in
the length calculation.
▪ Numeric Digit Grouping (=M-Files.PdfProcessor.NumericDigitGrouping) (3.1.810.2+)
• Boolean property.
• (Optional) Defines whether to use numeric digit groupings based on the locale
thousands separator in placeholder values.
• Default: false

Page 94 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
▪ Wrap Length (=M-Files.PdfProcessor.WrapLength)
• Integer value.
• (Optional) The number of characters per line, to which the overlay text is word
wrapped. Single words longer than this are force wrapped at the specified length.
• Default: 0 = Text is not wrapped any more than it is.
• Values less than zero are ignored. The default value is used.
▪ Common position properties: Vertical Alignment, Horizontal Alignment, Vertical Position,
Horizontal Position, Rotation (degrees)
▪ Common font properties: Font, Font-size, Font-color
▪ Other common properties: On Background, Pages
• Barcode (=M-Files.PdfProcessor.BarcodeStamp)
o Overlay with an automatically generated barcode image generate.
o Properties:
▪ Barcode Value (=M-Files.PdfProcessor.BarcodeValue)
• Multi-line text field property.
• Can include property tags.
▪ Barcode Format (=M-Files.PdfProcessor.BarcodeFormat)
• Multi-line text field property.
• JSON object containing formatting options
o Format Options:
▪ Use the Barcode Editing dashboard to define and test barcode image format. It is available from
the "View and Modify" task pane menu group whenever a barcode overlay is selected.

Overlays are processed after the possible Prepend and Append Reports are added, so those pages can also get the
overlays.

The Barcode Value supports custom placeholders, in addition to the default ones.

Command Type Input Output Description

REQUIRE Simple Any Pass- Throws an exception if an empty set of


Through results is resolved. This can prevent pdf
processing if a value cannot be resolve for
barcode generation.

4.9.10.1 COMMON OVERLAY PROPERTIES

Properties shared by multiple overlay types.

• Font (=M-Files.PdfProcessor.Font)
o SSLU to Fonts (=M-Files.PdfProcessor.Fonts)
• Font Color (=M-Files.PdfProcessor.FontColor)
o Text field property.
o (Optional) HTML color code for text color, for example. "#FF8800".
o Default: "#000000" black.
• Font Size (=M-Files.PdfProcessor.FontSize)
o Integer number.
o (Optional) Font size in pixels.
o Default: 12.
• Font Embedding (=M-Files.PdfProcessor.FontEmbed) (December '21 update or later)
o Boolean property.

Page 95 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o (Optional) Controls whether the font used with overlay is set to be embedded into the PDF.
o Default: false, or the value of Overlay Font Embedding Default -configuration setting.
• On Background (=M-Files.PdfProcessor.OverlayOnBackground)
o Boolean property.
o Controls whether the overlay is placed behind or front of the document.
• Opacity (=M-Files.PdfProcessor.Opacity) (3.1.810.2+)
o Integer number, 0 - 100.
o (Optional) Opacity of the overlay image.
o Default: 100, fully opaque.
• Pages (=M-Files.PdfProcessor.OverlayPages)
o Text field property.
o Controls on which pages to apply the overlay.
o Comma separated combination of following:
▪ Numbers: 5
▪ Ranges: 3-75
▪ Keywords that can be used as numbers or in ranges:
• %FIRSTORIGINAL%, %LASTORIGINAL%,
o Refer to the original document page numbers, excluding the added report
pages.
• %FIRST%, %LAST%, %ALL%, %ODD% and %EVEN%
• Horizontal Alignment (=M-Files.PdfProcessor.OverlayHorizontalAnchor)
o SSLU to Horizontal Alignments (=M-Files.PdfProcessor.HorizontalAlignments)
o Control the alignment:
▪ Left, Center, Right
• Vertical Alignment (=M-Files.PdfProcessor.OverlayVerticalAnchor)
o SSLU to Vertical Alignments (=M-Files.PdfProcessor.VerticalAlignments)
o Control the alignment:
▪ Top, Center, Bottom
• Horizontal Position (=M-Files.PdfProcessor.OverlayHorizontalPosition)
o Integer number. Unit 1/72 of an inch.
o For alignments Left and Center:
▪ Positive value is the shift from aligned position towards right.
o For alignment Right:
▪ Positive value is the shift from aligned position towards left.
• Vertical Position (=M-Files.PdfProcessor.OverlayVerticalPosition)
o Integer number. Unit 1/72 of an inch.
o For alignments Center and Bottom:
▪ Positive value is the shift from aligned position towards up.
o For alignment Top:
▪ Positive value is the shift from aligned position towards down.
• Rotation (degrees) (=M-Files.PdfProcessor.Rotation)
o Integer number. Unit degrees.
O Rotation in counter clock vice direction.

Page 96 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.9.10.2 OVERLAY CONTROL BY THE SOURCE OBJECT

In addition of the overlays defined by the Rendition Instruction by its Stamps (=M-Files.PdfProcessor.Overlays)
property the processed object itself can also include the same property and by that define an additional set of
overlays to place into the result PDF.

If the processed object has a value True in a Boolean property with an alias
M-Files.PdfProcessor.IgnoreRenditionInstructionOverlays in it that will make all the Overlays defined by the Rendition
Instruction to be ignored.

4.9.11 CUSTOM RENDITION CONFIGURATIONS

Custom Renditions are PDF files created from multiple different rendition parts. Rendition parts are either ready PDF
files in the vault or ones generated on the go.

The created rendition pdf can be uploaded to replace a file in the vault object, or the created pdf can be updated into
an external vault object. When creating a new object, a lookup property to contain a relationship back to the root-
object is added. This reference can be configured as either version specific or to the latest version. To the object, a
text property Custom Rendition Key (=M-Files.PdfProcessor.CustomRenditionKey) is added to contain the Key of the
creating rendition configuration. If the rendition was created via a Custom Rendition Instruction, a lookup property
referencing to that class object is added. These properties, along the relationship, are used when checking whether
the root-object already has an older rendition of same type, and to select existing object in which the updated pdf is
uploaded.

Different custom rendition types are configured in the configuration under the key Renditions[].

• Name
o (Optional) string value, a user readable name of the rendition.
• Key
o Unique string alias of the rendition.
o Do not use a value which is an alias within the vault.
• Name Format
o (Optional) Format string of the name to be given to the created rendition object.
Available fields: {0}=Key of the rendition, {1}=Title of the source object.
o Default: "{0}:{1}".
• Output Class
o (Optional) Identifier (Alias, ID) of an object class as which to create the rendition.
Note: The selected value will only affect the creation of the rendition object, changed value will not
change the class of the existing renditions even when their PDF is updated.
o Note: If the rendition is created using a Custom Rendition Instruction object, the value of Output
Class property set in it will override value of this configuration value.
o Default: 0, "Unclassified Document".
• Inplace File Replace
o (Optional) Boolean value.
o If true: the resulting PDF shall be uploaded into the root-object to replace existing file.
o If false (default): the resulting PDF is updated into an external object.

Page 97 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Ignore Conditions
o (Optional) Array of Search Conditions (3.4), which if all are true, the target rendition shall not be
performed even if the Workflow and State conditions have matched or manual generation was
requested.
• Exact Version
o (Optional) Boolean for whether the link set into created rendition referring to original source shall
be version specific or to the latest version.
o Only valid when the Inplace File Replace is false.
o Default: false.
• Enabled Targets
o (Optional) Array of "filters" for the root-object to which this rendition is allowed to be made.
Exception is thrown if the rendition is requested to an object which does not match any of these
target filters.
o If undefined or empty array, the rendition can be requested for any object.
o Each filter contains the following keys:
▪ Object Type
• Object type identification (Alias, ID) for the root-object.
▪ Class
• (Optional) Class identification (Alias, ID) for the root-object.
• If undefined, all classes of the object type match the filter.
▪ Workflows
• (Optional) Array of workflow identifications (Alias, ID, GUID), in which the root-
object must be in.
• If undefined or empty array, the object can be in any workflow or in none.
▪ States
• (Optional) Array of workflow states (Alias, ID, GUID), in which the root-object must
be in.
• If undefined or empty array, the object can be in any workflow state.
• Parts
o Array of different Rendition Parts (4.9.12) the rendition comprises of.
o At least one must be defined.
• Visible Only To Caller
o (Optional) Boolean for whether the created rendition is set at creation and each update to use an
ACL which makes the object only visible to the user who has caused the rendition to be created.
o Default: false.

4.9.12 RENDITION PARTS

Conceptually, Rendition part is one or more pdf documents that come from a single configuration.

• Mode
o (Optional) The creation type:
▪ "Convert"
• Convert source objects document into PDFs. Note that this conversion does not
follow any possible Created From properties at the source object like the
Document Rendition Instruction does. The Reference[] exclusively defines the
final source object.

Page 98 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
▪ "Generate"
• (Default) Objects which must be processed using the
Rendition Instruction object. For this the source can be a file processed
with Document Rendition Instruction or even plain object converted with
Metadata Rendition Instruction. This mode is not supported when
Structure Free is true.
▪ "Ready"
• Sources that are ready PDFs. Source which is not a PDF-file will be ignored. See
also MFD On Ready Mode.
▪ "Report"
• Process the source object properties using transformation file defined by Xslt.
• MFD On Ready Mode
o (Optional) clarification for MFD handling when in Ready-Mode:
▪ "Take First PDF"
• (Default) Take only the first found PDF, if any, from a MFD.
▪ "Take All PDFs"
• Take the all PDF files, if any, from a MFD.
▪ "Ignore MFD"
• Ignore the MFD object if more than one file, regardless of type.
• Reference
o (Optional) Relationship path from the root-source-object to an alternative source object to be used
instead. First configuration in the array defines a step from the root-source-object to related objects,
and each following configuration is followed from the results of the previous step. The act of
following object relations can return 0 or more targets. If zero valid targets are found the rendition
part is silently skipped. If multiple targets are found they all are processed and resulting PDF pages
added into the final PDF.
o If unset or an empty array, the original source-object is used.
o Property
▪ Identification (Alias, ID) of lookup property which leads to target objects of the part.
o Reverse
▪ (Optional) Boolean flag whether the property relation is forward or reverse.
▪ Default: false.
o Object Type
▪ (Optional) Identification (Alias, ID) of the object type which the found objects need to be.
Target of unmatched object type is silently ignored. Useful mainly only with Reverse
relation where the found objects may be of any type.
▪ If unset, targets of all object types are accepted.
o Class
▪ (Optional) Identification (Alias, ID) of the object class which the found objects need to be.
Target of unmatched class is silently ignored. Useful mainly only with Reverse relation
where the found objects may be of any class.
▪ If unset, targets of all classes are accepted.
• Rendition Instruction
o Identification of the rendition instruction object used with all the source objects. The value is used
only when the Mode is Generate.
o If this is set, the RenditionKey must be unset or empty.
o Workflow and State limitation specified at the rendition instruction are not enforced.
o Overlays and Prepend/append reports specified at the rendition instruction are included.

Page 99 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Rendition Key
o Key of another Rendition configuration used with all the source objects. The value is used only
when the Mode is Generate. If this is set, the Rendition Instruction must be unset or
empty.
o DO NOT create infinite loops with renditions.
o NOTE: If the referred rendition contains Reference[] configuration, it will further change the
used source object from the one resolved by the current rule.
• Ignore Conditions
o (Optional) Array of Search Conditions (3.4), if the source object has all of these true, that source
object is silently ignored and not processed into the rendition.
• Alt Conditions
o (Optional) Array of Search Conditions, if the source object has all of these true, for that source the
Alt Rendition Instruction or Alt Rendition Key are used instead of the
Rendition Instruction and Rendition Instruction Key.
• Alt Rendition Instruction
o (Optional) Identification string of alternate rendition instruction. See Rendition Instruction
for more.
o If Alt Conditions is specified, either this or Alt Rendition Key is required.
• Alt Rendition Key
o (Optional) Key of alternate rendition. See Rendition Key for more.
o If Alt Conditions is specified, either this or Alt Rendition Instruction is required.
• Xslt
o The path name of the file used as the transformation xml only when the Mode is Report.
o If unset, the built-in default transformation is used.
▪ PDF from the default version contains a list all objects properties.
o Relative path name is searched from the assembly location. Pathname can also be absolute
pathname of any accessible file at the server.

4.10 PERIODIC TASK

Periodic Task module introduces a way to model repeating tasks. It is possible to configure the periodic task objects
behavior in two ways: either to reuse a single periodic task object that will be re-scheduled after each period or to
create a new periodic task object for each period. The module can also be configured to monitor other objects and
automatically under certain circumstances i.e. when certain conditions are met create related periodic task objects.

Periodic task is any object of type, class and workflow specified in the configuration using key
Task Processing Rules[] and that contains the following 4 required properties:

• Time Unit (=M-Files.PeriodicTask.TimeUnit)


• Interval (=M-Files.PeriodicTask.Interval)
• Period Start Date (=M-Files.PeriodicTask.PeriodStartDate)
• Period End Date (=M-Files.PeriodicTask.PeriodEndDate)

Three optional properties may also be included:

• Days To Complete (=M-Files.PeriodicTask.TimeToComplete)


• Activation Time Unit (=M-Files.PeriodicTask.ActivationTimeUnit)
• Activation Date (=M-Files.PeriodicTask.ActivationDate)

Page 100 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Functionality in the Periodic Task module is triggered only when an object of defined type, class and workflow with
the required 4 properties is checked in. Furthermore, the object might need to fulfill a set of conditions specified in
the configuration (see ). The calculation in the module sets the Period Start Date value if unset, always updates the
Period End Date, and optionally also sets or updates Activation Date, if Time To Complete and Activation Time Unit are
defined. Activation Time Unit is used to specify the time units to Time To Complete.

Additional functionality is most often specified using workflows.

The example implementation of Periodic Task (=M-Files.ComplianceKit.PeriodicTask) class object contains Periodic
Task (=M-Files.ComplianceKit.PeriodicTask) workflow. This workflow is auto set to enter Pending Completion state on
the date of Activation Date. This state change can be used to trigger various effects like user notifications. When user
has completed the task, and sets the workflow to Completed state, this will reset the Period Start Date to empty,
which will enable the recalculation of the period start date when the state is set back to Scheduled. There is an
immediate automatic state transition to change the workflow back to Scheduled state and trigger the functionality
specified above.

4.10.1 TIME UNIT PROPERTY

Time Unit is a value from the value list Time Units (=M-Files.PeriodicTask.TimeUnits) containing the following items:

• Days
• Months
• Years
• Weeks
• WeekDays (Similar as Days but counting only the weekdays Monday – Friday)

4.10.2 INTERVAL PROPERTY

The Interval is number value specifying how many time units is a one period. Valid values are all positive integers,
excluding zero.

4.10.3 PERIOD START DATE PROPERTY

The Period Start Date is Date specifying the start date of the period, if unset gets set as today when properties are
saved.

4.10.4 PERIOD END DATE PROPERTY

The Period End Date value is automatically set to a date calculated using the following formula:
= (PeriodStartDate + (Interval * TimeUnit)).
Time unit in the above formula is the logical meaning of the unit, for example the week is 7 days.

4.10.5 TIME TO COMPLETE PROPERTY

The optional Time To Complete is the number used in calculating the activation date. Valid values are positive
integers, including zero. The value in this property represents how much time is given for the assignee to complete the
periodic tasks.

Page 101 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.10.6 ACTIVATION TIME UNIT PROPERTY

The optional Activation Time Unit is the value from the same value list than Time Unit. The value specifies the unit
used in Time to Complete.

4.10.7 ACTIVATION DATE PROPERTY

When the Time To Complete is set, the Activation Date property (is added to the object and) is set to a date calculated
using the following formula:
= (PeriodEndDate - (TimeToComplete * ActivationTimeUnit)

4.10.8 TASK PROCESSING RULES CONFIGURATION

The rules how to process the Periodic Task objects is configured using Task Processing Rules[] array in the
configuration. For each Periodic Task, the array should include an object with the members specified below. There
should be no overlapping configurations between the rules. This means that there should not be two task processing
rules that are valid for an object at the same time. For instance, if one rule is configured to be valid for all classes of a
certain object type, there should not be another rule that has the same object type and some class specified, as the
first rule includes the latter.

If no Task Processing Rules configuration exists or the value is null then all objects can act as Periodic Tasks if
they include the required properties. However, for performance reasons it is recommended that this configuration is
set and as many of the keys as possible are specified.

• Rule Name
o The name of the periodic task processing rule.
• Object Type
o The object type identification. Only the objects of the specified type are recognized as periodic tasks
by this rule
• Classes[]
o Optional array of class identifiers. Each of these classes must belong to the defined ObjType.
o If defined, only the identified classes of the object type are recognized as periodic tasks by this rule.
o If unset or null value then all classes of the defined object type are recognized as periodic tasks by
this rule.
• Workflow
o Optional workflow identifier. If defined, only the objects belonging to the specified workflow are
recognized as periodic tasks by this rule.
• Recalculate States[]
o Optional array of state identifiers. If specified, they must be present in the vault.
o If defined, the recalculation is only done when the object is in one of these states.
o If the key is not defined, states will not restrict when the recalculation is done. Thus it is possible to
trigger the Periodic Task recalculation behavior in every state and without a state.
• Fixed Period
o Optional Boolean value that will further specify how the Period Start Date is calculated.
▪ If set to false, the start date will be the date the recalculation was done, that is, the
current date.
▪ If set to true, the start date will be the Period End Date. If there is no previous end date,
the current date will be used.

Page 102 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o If the key is missing, value false is used as default value.
• Forced Recalculate Transitions[]
o Optional array of state transitions that cause the periodic task to recalculate itself i.e. change the
Period Start Date (even if the property would have a valid date value) and calculate the Activation
Date and Period End Date accordingly.
• Create New Task Transitions[]
o Optional array of state transitions that trigger a new periodic task object creation typically for the
next period. The new task object will copy some properties from the task object that corresponds to
the previous period. Using this configuration value is the way to take the "separate task object for
each period" behavior into use. NOTE: pay attention when using this configuration value so that an
infinite loop is not created because of workflow automatic state transitions i.e. creating a new
periodic task object would immediately trigger the creation of next object etc.
• New Task Preserved Properties[]
o Optional array of properties that will be copied over from the previous period's task object (if they
exist) to the new period's task object. In addition to the listed properties the task scheduling as well
as the class mandatory properties will be copied as well. This configuration parameter applies only if
using separate tasks objects for each period.
• New Task Initial State
o Optional workflow state which is set for the new periodic task object. If not specified then the
default state of the previous periodic task object's workflow is used. This configuration parameter
applies only if using separate tasks objects for each period.

4.10.9 INITIAL CREATION RULES CONFIGURATION

Monitoring and creation of periodic tasks is defined using the optional Initial Task Creation Rules[]
array in the configuration file. Each block there is one separate case. When an object that fulfills the Triggering
Conditions is checked in a new periodic task object of defined class will be created with the given scheduling
details. However, a new periodic task object is not created if the triggering object already contains a relationship to
existing periodic task object with the same characteristics (object type, class and workflow).

The new periodic task object will be named using the defined format and contains a relationship to the triggering
object.

• Rule Name
o The name of the initial creation rule.
• Triggering Conditions
o The filter conditions that -once fulfilled- trigger the new periodic task object creation. (See 3.4)
• Class
o The class of the periodic task object to create.
• Workflow
o (Optional) The workflow set to the new periodic task.
If unset, the possibly defined default workflow of the defined class is used.
• Initial State
o (Optional) The state into which the new periodic task is set.
Value is ignored if the Workflow is not defined.
• Reference Property
o (Optional) The property definition that is used when creating the relationship from the new periodic
task object to the triggering object.

Page 103 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Name Format
o String, format for the name set to the new periodic task.
The format string with up to one placeholder: {0}
▪ 0 = Name of the monitored object.
• Interval
o Integer, Interval value set to the new periodic task. (See 4.10.2)
• Time Unit
o The time unit for the Interval setting. (See 4.10.1)
• Time To Complete
o (Optional) Value of Time To Complete set to the new periodic task. (See 4.10.5)
• Activation Time Unit
o (Optional) The time unit for the Time To Complete setting. (See 4.10.6)

Page 104 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.11 PRINT AND DOWNLOAD PREVENTION MANAGER

The Print and Download Prevention Manager module provides the ability to manage the Print and Download
prevention Add-On. For the Add-On to function, it must be licensed via the M-Files Server License. The Manager
module does not indicate if this Add-On is licensed or not.

The purpose of the Print and Download Prevention Add-On is to prevent users with "read only" access to an object
from printing and downloading the object. When the Print & Download Prevention feature is enabled, the user is
shown a message about insufficient permissions when an attempt to download a document happens.

If the Print and Download Prevention Add-On is licensed, then the Print and Download Prevention Manager facilitates
the enabling and disabling of the functionality as well as defining exception rules for when the prevention should not
occur. The exception rules contain matching criteria based on the metadata of the document or the identity of the
user accessing the document, and when matched, printing and downloading of the object is not prevented.

4.11.1 PRINT AND DOWNLOAD PREVENTION

The Print & Download Prevention is a M-Files Core feature. The feature can be enabled or disabled in the vault
through the module dashboard (not the actual module configuration). Changing the state of the Print & Download
Prevention feature takes effect when the vault is brought online the next time.

4.11.2 PREVENTION EXCEPTION RULE

A set of rules can be created to allow printing and downloading of documents that by default would not be allowed to
the user having a read-only access.

• Rule Name
o Unique name that identifies the configuration rule.
• Document Matching Conditions
o Array of Search Conditions that, when match to the selected document and the user triggering the
print/download event, allow the document download to happen.
o See Search Condition chapter 3.4 for details.

4.12 TRAINING

The Training module provides a flexible system for creating and maintaining training items, events and records.

After a user creates a training item or an event and assigns it to be learned by a set of people via a training rule, the
module will ensure a training record exists for each combination of learner and training item. For example, a rule
identifying 5 separate documents and matching to a group of 100 employees will result in 500 training records.

Learners can mark their training records as completed by changing a property or the workflow state of their training
record.

4.12.1 BACKGROUND PROCESSING

As the learner and training item count increases, the processing time required to create, or update training records
increases significantly. To keep the system from slowing down users, the module does all record processing in the

Page 105 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
background. Note that when running in multi-server mode with more than one server attached, all processing is still
performed on a single primary server.

Some configuration settings are provided to control this behavior:

• Obsolete Property
o Record Update Queue Interval Seconds
▪ Indicates how often the system should try to spawn a background record updating thread.
▪ Values less than 1 disable the timer. (Only begins when the
ContinueRecordUpdating() extension method is called.)
▪ Default: 60 (=1 minute).
• Max Polling Interval In Seconds
o The maximum number of seconds between polling cycles to fetch new application tasks to be
processed by this module.
• Requeue Faulted Training Object Minutes
o Indicates how often the system will retry processing training objects whose previous processing
resulted in at least one record creation/update error.
o Default: 720 (=12 hours).

4.12.1.1 ACTIVITY MONITOR DASHBOARD

Previously provided as a stand-alone UIX application known as the Training Status Dashboard. The Activity Monitor
Dashboard is now available with the standard Compliance Kit installation via M-File Admin. It can provide insight into
the recently processed, active and queued training item tasks. It can be launched from the Training module's context
menu.

4.12.2 CURRENT STATUS

Training module processes items, rules and records based on their Current-status at the time of the process or
transaction. The property that holds object’s Current-status is configurable for each class in Training module
configuration with the Current property. The principle is that all items are considered current unless specifically set
to not-current. This means that items are being processed if:

• Object has the Current-status property with value True or without value.
• Object hasn’t got the Current-status property

4.12.3 ASSIGNING LEARNERS

Training can be assigned a learner in multiple different ways. All these ways can be used simultaneously. If person is
found using any of the available methods he will become a learner.

• Direct from training event.


o The training event links to persons via property defined in Learners 4.12.5.
• Direct from learning rule.
o The rule links to persons via property defined in Learners 4.12.5.
• Via group from rule.
o The rule refers to group object via property defined in Groups 4.12.8.
o The referred group object links to persons via property defined in Learners 4.12.5.

Page 106 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Via membership from rule.
o The rule refers to some value list item via property defined in Membership 4.12.9.
o Membership object links person to the same value list item.
• Via shared property from rule.
o The rule refers to a value of shared property via property defined in MatchCriteria 4.12.7.
o The person refers to the same value via the same property.

If multiple values of a single shared property are included in the rule, a person can match to any of them. For example,
if match criteria is Country and it has values Country = Finland, United States then rule matches persons with either
Country property value i.e. people in both countries.

If multiple different shared properties are included in the rule, person need to match each of them. For example, if
match criteria are Country and Role with values Country = Finland, Role = Manager then rule matches only managers
in Finland. Obs. The OR scenario where rule matches all managers globally + everyone in Finland requires two separate
rule objects with single shared property: one with Country and another one with Role.

4.12.4 TRAINING ITEMS

Training items, things that can be learned or trained are specified using Items[] array in the configuration file. Each
block there is one separate item type. Default implementation uses version controlled Major Version Collection class
document and Course Description class objects as training items.

• Object Type
o The object type of the item.
• Class
o The object class of the item.
• PropertyDef[]
o Array of lookup properties that can be used to refer to a required learning item in a learning rule
object.
• Current
o Boolean property indicating if this item is current.
• Record Class
o The class of the record to create from this training item. The record needs to be configured in
4.12.10.
• Record Workflow
o The workflow to be set to the records created from this training item. The workflow needs to be
configured in 4.12.12.

Either Object Type or Class may be left unset or set to null value.

4.12.5 LEARNERS

The trainings are assigned to learners that are specified using the Learners[] array in configuration file. Default
implementation uses the Person object type as a learner.

• Object Type
o The object type of the learner.
• Class

Page 107 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o The object class of the learner.
• PropertyDef[]
o Array of lookup properties that can be used to refer to a required learner in a learning rule object.
• Current
o Boolean property indicating whether this learner is current.

Either Object Type or Class may be left unset or set to null value.

4.12.6 RULES

Rules that tie learning items to learners are specified using the Rules[] array in configuration. Default
implementation includes Document Learning Rule and Course Attendance Rule.

• Object Type
o The object type of the rule.
• Class
o The object class of the rule.
• PropertyDef[]
o Array of lookup properties in training records that are used to refer to this rule.
• Current
o Boolean property indicating if this rule is current.

Either Object Type or Class may be left unset or set to null value.

The following properties can be defined in the vault and included in training rule objects to specify a validity period
and grace period for related training records:

• Grace Period (="M-Files.Training.GracePeriod")


o The period that users have to complete or re-complete a training requirement.
o Number (integer) property
• Grace Period Time Unit (="M-Files.Training.GracePeriodTimeUnit")
o The unit of the Grace Period value.
o Lookup property, referring to the Time Units value list (="M-Files.ComplianceKit.TimeUnits")
• Validity Period (="M-Files.Training.ValidityPeriod")
o The period that a training record is considered valid (time before re-learning is required).
o Number (integer) property
• Validity Period Time Unit (="M-Files.Training.ValidityPeriodTimeUnit")
o The unit of the Validity Period value.
o Lookup property, referring to the Time Units value list (="M-Files.ComplianceKit.TimeUnits")

4.12.7 MATCH CRITERIA

The Match Criteria[] array in configuration defines the properties that can be used with shared property
matching.

4.12.8 GROUPS

The Groups[] array in configuration defines the group objects that can be used with group matching. Default
implementation uses the Project class of Project object type as a possible group.

Page 108 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
The group object must include a reference to learners using a property defined in 4.12.5 Learners.

• Object Type
o The object type of the group.
• Class
o The object class of the group.
• PropertyDef[]
o Array of lookup properties used to refer to the group.
• Current
o Boolean property indicating if this group is current.

Either Object Type or Class may be left unset or set to null value.

4.12.9 MEMBERSHIP

Objects that link a person to some group are specified using the Membership[] array in configuration. Default
implementation includes a Department Member class membership.

The membership object must include a reference to a learner using a property defined in 4.12.5 Learners.

• Object Type
o The object type of the membership object.
• Class
o The object class of the membership object.
• PropertyDef[]
o Array of lookup properties used to refer to the value list item or M-Files object.
• Current
o Boolean property indicating if this membership is current.

Either Object Type or Class may be left unset or set to null value.

4.12.10 TRAINING RECORDS

A Training Record indicates that a specific learner has or should learn one particular training item. All training records
are configured under the Records[] array in the configuration json. The default implementation includes two
Training Record classes; Course Attendance Record and Document Learning Record. It is not necessary to have a
separate entry for each record class in the configuration if they use the same current, required and complete
properties.

• Object Type
o The object type of the record.
• Class
o The object class of the record.
• Current
o Boolean property indicating if this record is current.
• Required
o Boolean property indicating if this record is required.
• Complete
o Boolean property indicating if this record is completed.

Either Object Type or Class may be left unset or set to null value, but not both.

Page 109 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
In addition to the three Booleans configured above a Training Record class must include properties referring to the
Training Item and the Learner (as defined in their respective configurations). A property referring to training event can
also be included.

The following optional properties should also be defined in the vault, and included in the Training Record class if
validity periods or grace periods are specified in associated Training Rules:

• Assignment Date (="M-Files.Training.AssignmentDate")


o Date property
o Indicates when the Record last entered the Pending state.
• Due Date (="M-Files.Training.DueDate")
o Date property
o Indicates when the Record should be completed by (calculated from the Training Rule’s Grace
Period).
• Valid From (="M-Files.Training.ValidFrom")
o Date property
o Indicates when the Record should be considered valid from (usually the date it was completed).
• Valid Until (="M-Files.Training.ValidUntil")
o Date property
o Indicates when the Record will expire (calculated from the Training Rule’s Validity Period).
• Re-learning Start Date (="M-Files.Training.RelearningStartDate")
o Date property
o Indicates when the Record will enter the Expiration Pending state, and a new Record may be created
for re-learning (calculated from the Record’s Assignment Date and the Training Rule’s Validity Period
and Grace Period).

4.12.11 EVENTS

Events are special training situations where training items are learned. These events are configured under Events[]
array in the configuration file. Default implementation includes Training Event and Quiz classes.

• Object Type
o The object type of the event.
• Class
o The object class of the event.
• Current
o Boolean property indicating if this event is current.
• PropertyDef[]
o Array of lookup properties that can be used to refer to a learning event in a learning rule object.
• Complete
o Boolean property indicating if this event is completed.

Either ObjType or Class may be left unset or set to null value.

4.12.12 WORKFLOWS

The workflows used in training records and their states are configured using Workflows[] array in the
configuration. Default implementation includes Course Attendance Record and Document Learning Record workflows.

Page 110 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Workflow
o Reference to the workflow.
• Not Required States[]
o Array of states of the workflow for "not required".
• Pending States[]
o Array of states of the workflow for "pending".
• Valid States[]
o Array of states of the workflow for "Valid".
• Expiration Pending States[]
o Array of states of the workflow for "ExpirationPending" (typically means that re-learning is required).
The system handles records being in the expiration pending states like they would be expired,
meaning that new pending records are created for required records already in these states. For
users these states still should mean that the records are valid but they are soon about to be expired
and should be re-learned if they still are required.
• Expired States[]
o Array of states of the workflow for "Expired".
• Never Learned States[]
o Array of states of the workflow for "Never learned".

The training records’ workflow state is automatically changed based on the values of three Boolean properties
(Required, Complete, Current). These properties are configured in the Training Records section.

Is Required Is Complete Is Current Resulting Workflow State


No No Yes Not Required
Yes No Yes Pending
Yes/No Yes Yes Valid
Yes/No Yes No Expired
Yes/No No No Never Learned

4.13 UI CONFIGURATION

UI Configuration module configures the features of the calendar on the home page, mainly which event objects are
shown, and which are the properties they use to store their event date.

UI Configuration module also allow configuration of how the related objects are shown in the file list view.

4.13.1 FAST BROWSING SUPPORT

M-Files client versions after the November '20 update, include a fast browsing feature which can significantly improve
the speed and smoothness of the desktop client. For fast browsing to be activated, all UIX applications installed in the
vault must also support it.

The Compliance Kit can be configured to use fast browsing compatible versions of the application from the Client
Application Settings section of the UI Configuration module's dashboard.

If fast browsing is enabled, the Compliance Kit applications will not be to run on versions of the desktop client that do
not support it.

Page 111 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.13.2 CALENDAR EVENT TYPES

Note: The Compliance Kit's Home Screen Application must be installed for the calendar and configured items to
appear on the home screen. This can be done in the Client Application Settings section of the UI Configuration
module's dashboard.

Each block in configuration file under section Calendar Event Types[] specifies one object type to be
displayed. Any number of sections can be added as needed. Each valid block must contain:

• Specification of the type or class of the object, using one of the below keys:
o Object Type
▪ Will be ignored if a value is defined for Class
o Class
• Specification of the property definitions which contain the event type’s date information:
o Start Date (required)
o End Date (optional)

If the EndDate is not specified, not resolvable, or is not present in an object it will be treated as a single day event
(EndDate = StartDate).

4.13.3 RELATED OBJECT RULES

This feature has been deprecated. The settings should now be configured in Advanced Vault Settings under the path
Configuration/Client/Desktop/Listing/Related Object Hierarchy. If the feature has already been configured, it may
continue to work if the client settings are not managed centrally.

4.13.4 NO CHECK OUT

Listing class identifiers into No Check Out Classes[] array in the configuration, disables the Check Out
command for objects of defined classes.

4.13.5 NO COPY

Listing class identifiers into No Copy Classes[] array in the configuration, disables the default Make Copy
command for objects of defined classes.

Note that Object Creator can also be configured to disable the default copy functionality of some classes, as well as
create an alternate Make Copy command.

4.14 UNIQUE OBJECT ENFORCEMENT

Unique Object Enforcement module can be used to make sure newly checked in object is the only one having some
same property value combination. An error is thrown at object check-in if a conflicting object with same property
values exists.

Any number of uniqueness checks can be configured in to the configuration file under Unique Objects[] array.
At the check in of an object that match the search criteria of Object Type, Class, Workflow, State and
Additional Search Criteria, allow no other object to have same value combination for specified
Unique Properties[] that this object has. The other objects are not limited by the search criteria of the check-
in object itself. If other objects are found, an exception with the Custom Error Message is thrown and thus

Page 112 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
disallowing the original check-in. If no Custom Error Message is defined, a build-in error message including the
index’s Name is thrown instead.

The object that is matched against the index check must have the unique property values specified. If the object
matches with index conditions but does not contain a value for all properties specified in Unique Properties[],
the system may let the object proceed without index check, prevent the object operation with an error, or modify the
incoming object properties so that the index check can be done. The Missing Property Behavior specifies
how the system behaves if a property value is missing from the object; it can either fail, continue without the
uniqueness check, or append the missing property with an empty value. The Empty Value Behavior in turn
specifies how properties with an empty value are handled; again they can make the check to fail, continue without
uniqueness check, or understand an empty value as a single valid value (i.e. null value).

• UniqueObjects[]
o Name
▪ Human readable name string of the index.
o Description
▪ (Optional) Description string of the index.

o Object Type
▪ (Optional) Object type filter.
o Class
▪ (Optional) Class filter.
o Workflow
▪ (Optional) Workflow filter.
o State
▪ (Optional) Workflow state filter.
o Additional Search Criteria
▪ (Optional) Search Conditions used as additional criteria. Uses standard evaluation (see 3.4).
▪ If this is defined the Additional Criteria value is ignored.

o Unique Properties[]
▪ List of property references that must be unique (no other object in the vault shall contain
the exact same value combination as this object).
o Custom Error Message
▪ (Optional) Custom "duplicates found" error message. Translatable content (see section 3.5).
o Missing Property Behaviour
▪ (Optional) Specifies the behavior if the incoming object does not contain all properties that
were specified in Unique Properties. Valid choices are:
• "Ignore Object"
o The object operation may continue but the uniqueness check will be
skipped.
• "Reject Object"
o (Default) The object operation will be prevented with an error message.
• "Append Property"
o The object’s metadata will be modified to contain all properties. The
properties that were added will be set to have an empty (null) value.
o Empty Value Behaviour
▪ (Optional) Specifies the behavior if the incoming object does not contain a value for all
properties that were specified in Unique Properties. I.e. the property is present, but
the value is empty (i.e. null value). Valid choices are:
• "Ignore Object"
o The object operation may continue but the uniqueness check will be
skipped.
• "Reject Object"

Page 113 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o The object operation will be prevented with an error message.
• "Accept Value"
o (Default) The uniqueness check is performed, and the missing value (the
null value) is understood to be a valid individual value.

4.15 USER SYNCHRONIZATION

User Synchronization module synchronizes and optionally creates a Person (=M-Files.UserSynchronization.User) class
objects in the vault for each vault user and keeps them up to date during changes to corresponding user and login
accounts.

After the Compliance Kit installation, the Synchronize Users option in the Compliance Kit Configurator can be used to
perform the initial Person object creations and a manual synchronization after manual user account changes. The
operation is asynchronous, and it is only triggered from the user interface and it will continue running on the
background until finishes.

Clicking the manual Synchronize Users button creates a cancelation task that will cancel any ongoing user sync tasks,
before creating a new user sync task.

Note that the background processing uses the application task queue to perform background tasks. The module now
uses the Max Polling Interval In Seconds property to determine the max number of seconds that can
pass between polling intervals.

4.15.1 LOGIN ACCOUNTS IN MULTI-SERVER MODE

When using the module in multi-server mode environment, it is always recommended that vault-level login accounts
be used. This ensures that the logins are the same across all servers.

Refer to Multi-Server Mode Configuration Guide for more information.

4.15.2 PERSON

The Person object has one required property:

• User Account (=M-Files.UserSynchronization.UserName)


o SSLU property to the built-in value list Users.
o This acts as a link to the M-Files user account.

A few optional properties:

• Full Name (=M-Files.UserSynchronization.FullName)


o Text field property.
o If available from the class, is set to user's name from the user account.
• User Groups (=M-Files.UserSynchronization.UserGroups)
o MSLU property to the built-in value list User groups.
o If available from the class, is set based on login account information.
• Email Address (=M-Files.UserSynchronization.Email)
o Text field property.
o If available from the class, is set to user's email address from the user account.

Page 114 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
• Account Disabled (=M-Files.UserSynchronization.Disabled)
o Boolean property.
o If available from the class, is set according the disabled information from the user account.
• Account Deleted (=M-Files.UserSynchronization.Deleted)
o Boolean property.
o If available from the class, is set according the deleted information from the user account, if the user
account of updated Person object is not found, that is assumed deleted.
o When the user account is deleted, this property is added to the class.
• Enabled Account Exists
o Alias of a Boolean property.
o If available from the class, is set to true only if both Account Disabled and Account Deleted are false.
o This property is defined in configuration file with the optional key EnabledAccountExists. If
not defined, then any value will never be set.
• Domain (=M-Files.UserSynchronization.Domain)
o Text field property.
o If available from the class, is set to name of the domain from the user account.

If the vault contains a Named Access Control List (NACL) with an alias M-Files.UserSynchronization.NACL it will be
applied as the permissions of newly created Person objects.

4.15.3 OBJECT CREATION ENABLED

Person object creation can be disabled by setting the optional Object Creation Enabled key's value to false in
configuration. The default value is true. If the Person object creation is disabled, the user synchronization module only
synchronizes login and user account information to existing Person objects. This mode is useful for example if the
Person objects are external and they are being synchronized from some 3rd party source. To make synchronization
work it must be taken care of that the external Person objects get the user account information set because that
information is used when mapping the user account to Person objects.

4.15.4 ACTIVE SYNCHRONIZATION

It is possible to use two modes in the user account synchronization. If the active synchronization is in use (optional
Active Synchronization key set to true in configuration file) then all changes made to the login accounts and
user accounts are immediately applied to the Person objects synchronously. Since this can be time consuming in the
bigger environments there is also another alternative. It is possible to synchronize the Person objects also periodically
in the background. This can be taken into use by setting the active synchronization off and setting a non-zero value for
the background synchronization interval (see chapter 4.15.5). The default value for using the active synchronization is
true.

Note: If you use Azure Active Directory (Azure AD) and its user group synchronization is enabled, disable active
synchronization in Compliance Kit (CK) and set the background synchronization interval to five minutes. If user
synchronization in Azure AD and active synchronization in CK are both in use, this can sometimes cause issues in
the synchronization process.

4.15.5 BACKGROUND SYNCHRONIZATION INTERVAL

The background synchronization interval can be set using the Background Sync Interval In Minutes
configuration variable. Setting the value to 0 disables the periodical operations. The value is 0 by default.

Page 115 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.16 UTILITIES

Utilities module contains small functionalities and helpful support methods that can called from scripts or other vault
applications as needed.

4.16.1 FILE VERSION

Functionality which when enabled with File Version Options/Enabled setting in configuration, mirrors
M-Files’ internal file version value into an integer property File Version (=M-Files.ComplianceKit.FileVersion) in the
object. This value increases each time the contents of the file changes or upon file renaming. Feature works for single-
file documents as well as multi-file documents and objects with files. If an object contains zero or more than one file,
this property gets set to a value of zero.

The file version property can be used for all kinds of objects with files by adding the property to an object. However,
the vault administrator should restrict the objects for which the property is calculated for performance reasons. This
can be done by using Filters key in the configuration. This reduces load on the server, as only these documents
will be checked whether they have the File Version property or should it be updated. Furthermore, as "File Version"
may need additional scripts if the workflow states modify the contents or the name of the file (described below), it is a
good idea to restrict the value updates to be done only on objects that have workflows with those safeguards in place.

For most cases the feature is automatic, but when a workflow state change modifies the file (e.g. every time there’s a
PDF conversion in the state change), or when the workflow state action may change the name of the file (that is, the
title of a SFD), a corrective call to UpdateFileVersionPropertyFromScript must be added into the workflows state script.
This includes the obvious PDF conversion state actions but also "Run script" actions that change the contents or name
of the file. If the script is not added while the name or the contents are changed, the file version is not kept in sync,
and an error message gets thrown.

void UpdateFileVersionPropertyFromScript( dynamic environment )

Furthermore, it is very important that either the Compliance Kit event handler doing the automatic update on the File
Version value is the very last of the executed event handlers or that the aforementioned method for explicit update is
called in any scripts executed after the Compliance Kit event handlers. The method must be called after any change to
the file contents or file name (or SFD title) in scripts.

Unlike the automatic updating, this method can be called and works even when Utilities module itself is not enabled.
However, if the File Version Options/Enabled is false, it will disable the functionality of this method.

Below is an example script for calling this method.

‘********************************************************
‘ M-Files Compliance Kit Example State Change Script for file version property update.
‘********************************************************
‘ Initialize the Compliance Kit event handler entry point.
Set MFCK = GetExtensionObject("M-Files.ComplianceKit")
‘ Call the update, arguments: Vault, UserId, ObjVer. This is an alternative way of
calling the method.
‘ Call ComplianceKit.Utilities.UpdateFileVersionProperty( Vault, CurrentUserID.Value,
ObjVer )
‘ Initialize a new Script Environment
Set oEnv = MFCK.NewEnvironment()
Call SetupEnvironment(oEnv)

Page 116 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
‘ Trigger the handler. Using this method ensures that the optimizations in MFAppPlatform
are used.
Call MFCK.Utilities.UpdateFileVersionPropertyFromScript(oEnv)
‘ =========================================

‘ SetupEnvironment

‘ Transfers the required script variables to the environment object.
‘ =========================================
Sub SetupEnvironment(byRef oEnvironment)
‘ IGNORE ERRORS
‘ (they should only come frome trying to set variables that don’t
‘ exist in this script type, which is expected)
On Error Resume Next
‘ Primitives
oEnvironment.CurrentUserID = CurrentUserID.Value
‘Complex
Set oEnvironment.ObjVer = ObjVer
Set oEnvironment.Vault = Vault
End Sub

4.16.2 PUBLISHED VERSION

Method that when called from any script, will increment the value of an integer property of the object.

This method can be called and works even when Utilities module itself is not enabled.

Int IncrementProperty( Vault vault, int userId, ObjVer objVer, string propertyAlias, bool throwOnError )

The throwOnError argument controls whether the method will throw an exception if the object does not contain the
specified property, or silently ignore this case without doing anything.

Use case: when called from workflow state change script, this will technically update the number of times this state
has been entered.

Minimal example script that can be used to call the method is as follows.

‘********************************************************
‘ M-Files Compliance Kit Example State Change Script for property increment.
‘********************************************************
‘ Initialize the QMS event handler entry point.
Set QMS = GetExtensionObject("M-Files.ComplianceKit")
‘ Call the increment.
‘ Arguments: Vault, UserId, ObjVer, aliasOfTheProperty, throwOnError.
Call QMS.Utilities.IncrementProperty( Vault, CurrentUserID.Value, ObjVer, "version", true )

4.16.3 LAST EDITABLE VERSION

Few different methods that when called from a script, will replace the objects current file with the version of the file
from the object's own history. These methods can be called even when Utilities module itself is not enabled.

Method to take the replacement file from the version when the single file object last was in the specified workflow
state.
Int RevertToFileFromState( Vault vault, int userId, ObjVer objVer, string stateAlias, bool throwOnError )

Page 117 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
Method to take the replacement files from the version when the object last was in one of the specified workflow
states.
Int RevertToFilesFromStates( Vault vault, int userId, ObjVer objVer, string[] states, bool throwOnError,
bool revertSFProperty )

The revertSFProperty argument is only meaningful with document objects.


• If true, document object will also revert its single-file-status.
• If false, document object does not change its current single-file-status and the operation may fail if SFD
would be reverted to contain multiple documents. With throwOnError=false, the result is -3 in this case.

Method to take the replacement file from the version when the single file objects file last had one of the specified
extensions.
Int RevertToLatestFileWithExt( Vault vault, int userId, ObjVer objVer, string[] extensions, bool throwOnError )

Reverse of the previous, a method to take the replacement file from the version the objects files extension last was
something other than any of the specified extensions.
Int RevertToLatestFileWithoutExt( Vault vault, int userId, ObjVer objVer, string[] extensions, bool throwOnError )

Special case of the above, a method to take the replacement file from the version the objects file last was something
else than .pdf.
Int RevertToLatestNonPdfFile( Vault vault, int userId, ObjVer objVer, bool throwOnError )

The throwOnError argument in all the above methods controls whether these methods will throw an exception if
suitable non-destroyed version is not found from the object's history, or silently ignore this case without doing
anything. Argument errors and use of unknown state alias will always throw an error.

If the object is already in the specified state or has a file with correct extension, nothing is done and that is not an
error case.

Below is an example script to use.

‘********************************************************
‘ M-Files Compliance Kit Example State Change Script for
‘ file revert to version from latest editable state.
‘********************************************************
‘ Initialize the Compliance Kit event handler entry point.
Set MFCK = GetExtensionObject("M-Files.ComplianceKit")
‘ Call the File revert.
‘ Arguments: Vault, UserId, ObjVer, aliasOfTheEditableState, throwOnError.
Call MFCK.Utilities.RevertToFileFromState( Vault, CurrentUserID.Value, ObjVer,
"EditableState", true )

4.16.4 SEQUENCES

Objects can be assigned an ID string upon creation or when object fulfills some specific criteria. This ID string is based
on an auto-incremented sequence. Different sequencing rules and their formats are defined in configuration under
Sequences[] array.

• Sequence Identifier
o Unique identifier of the sequence.
• Filter Conditions
o (Optional) Array of Search Conditions, which all must be true, for this rule to apply.

Page 118 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o See Search Condition chapter 3.4 for details.
• Generate Sequence Conditions
o (Optional) Array of Search Conditions, which all must be true, for this rule to actually generate a new
sequence value for the object (e.g. sequence value is generated at some specific workflow state).
o See Search Condition chapter 3.4 for details.
• Sequencing Properties
o (Optional) Array of references to lookup properties of which value combinations are used to
separate number sequences sharing this format.
These properties should be required by the class that uses this sequence. It must contain a non-
empty value when an object subject to the sequence is saved.
o If empty, all objects matching the conditions of this rule share the same number sequence.
• Appreciate Multi Value Properties
o Boolean value to specify whether all the values of a multi-select value list-based property are taken
into account when creating a sequence key for a unique sequence. If set to false, only the first value
of the specified property is taken into account when generating the key.
o Default: false
• Sequence Value Property
o Identifier of a text property to which the sequence value should be written to.
o Recommendation: Define this property as Calculated value (VBScript) with an empty script. This way,
it is shown in as a read-only property on the metadata card. Users should not usually edit this value.
• Allow Sequencing Properties Change
o Boolean value to specify whether object's Sequencing Properties are allowed to change
after sequence value has been assigned to SequenceValueProperty.
o Default: false.
• Enforce Filter Conditions
o Boolean value to specify whether the object must retain a match to the specified FilterConditions
after sequence value has been assigned to SequenceValueProperty.
o Default: true.
• Initial Value
o Initial string value for the sequence. Default = 1 (for numerical incrementing). Can also be a string
value which causes the sequence value to advance in alphabetical manner.
• Mask
o String mask used in conversion of the sequence number into a string. Default = "".
Technically this is not a mask, but a template text into which the version number is placed over.
▪ Mask: "abc"
• with number 1 => "ab1"
• with number 98765 => "98765"
▪ Mask: "0000"
• with number 15 => "0015"
▪ Mask: "ID…......."
• with number 98765 => "ID…..98765"

By default, the sequencing does not happen for template objects (objects having the IsTemplate property set to true),
even if the template object matches the FilterConditions of a sequence rule. However, templates can be got sequence
values generated for them, when the "IsTemplate = true" condition is explicitly included in the FilterConditions of the
rule.

4.16.5 ASSIGNMENT CLASS PERMISSIONS

This feature has been deprecated. Assignment class permissions are now managed in Advanced Vault Settings.

Page 119 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.17 VERSION CONTROL

The Version Control module provides customizable controlled versioning for documents.

The default configuration uses the PDF Processor (-) module to convert released documents to PDF and to sign version
acceptances electronically, these happen through workflow state actions.

Checking in a new document with a version controlled class will create a Controlled Document (Document Collection)
for it with the specified class. The checked-in document itself is saved with the class Working Copy
(=M-Files.VersionControl.WorkingCopy). All edits will be done to the working copy document.

Workflows and value lists defined in reference configuration are only one example, they can be fully customized.

4.17.1 CONTROLLED STATUS

The Controlled Status property (=M-Files.VersionControl.ControlledStatus) holds the version control’s internal status
for all version controlled objects (i.e. Controlled Document Collections, Working Copies, Released Versions, Version
Collections) independent of their actual workflows and states. The workflows that are used for each object are fully
customizable, configurable, and optional for all but the working copy.

Ideally, the states of all workflows created for version controlled objects should be mapped to their corresponding
Controlled Status in the Workflow section of the configuration file. If workflow mapping is not used, the system must
be configured to set the Controlled Status property or Working Copies to Approved and/or Released and Released
Versions to Effective and/or Retired as applicable. Commonly, this is done with a Set Property workflow state action.

The controlled status affects the available version control actions (task pane buttons) for a working copy. Changes to
the value will trigger certain defined behavior. For instance, entering the Released status will create a copy of the
current working copy as a released version. The default implementation will create the released version into the class
Released Version (=M-Files.VersionControl.ReleasedVersion), and place it in the Released Version
(=M-Files.VersionControl.ReleasedCopy) workflow, which is configured to convert it to PDF format with text stamp
stating the current workflow state, and an appended signature page.

The states of the Controlled Status:

• In Progress
o Document that is being edited.
o Action: Cancel.
▪ Change to Discarded or Retired.
o Workflow state change actions.
▪ Change into Approved or Released.
• Discarded
o Document that is abandoned before any release is made.
o Action: Resume.
▪ Change to In Progress.
• Approved
o Document that is approved but not yet released
▪ The document can be branched (Translated) and cancelled at this stage.
o Action: Cancel.
▪ Change to Discarded.

Page 120 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o Workflow state change action.
▪ Change to Released.
• Released
o Document from which a released version is made.
o Level actions for creating a new version.
▪ Change to In Progress with new version and filename.
o Branch actions for creating a new branch (e.g. Translation).
▪ Create a copy of the document with new branch in status In Progress.
o Action: Retire.
▪ Change to Retired.
• Retired
o Unmaintained working copy that has least one released version.
o Action: Resume.
▪ Change to Released.
o Action: Resume + Synch.
▪ Change to In Progress.

4.17.2 CREATING NEW VERSIONS

Simplified sequence for controlled version documents is:

1. Create a document.
2. Edit to perfection.
3. Publish as released version.
4. Create new version or branch.
5. Edit further.
6. Publish as released version.
7. Repeat from 4 if necessary.

4.17.3 VERSION CONTROLLED CLASSES

Version controlled classes are specified using the Classes[] array in the configuration file. Each block there is one
separately controlled class.

• Class
o Reference to the class.
• Scheme
o Identifier of a defined Versioning Scheme to use with this class (see 4.17.4).
• Working Copy Class
o (Optional) Class to give to the working copies of this controlled class.
o The default, built-in Working Copy class will be used if not specified.
• Released Version Class
o (Optional) Class to give to the released versions of this controlled class.
o The default, built-in Released Version class will be used if not specified.

• Released Version Workflow


o (Optional) Workflow to give to the released version of this controlled class.

Page 121 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
o Previous name of this key (used before Compliance Kit 2.1): Record Workflow
o Only needed to override the default workflow of released version classes (if there are instances
when a single class can be assigned to more than 1 workflow).
• Effective Versions Property
o (Optional) A property that will be added to all Controlled Document Collections and Version
Collections and will be automatically updated to point to Released Versions with the Effective status.
• Auto Supersed State
o (Optional) A state within the Released Version Workflow, which previous Released
Versions (with Released or Effective status) will automatically be moved to when a newer Released
Version is made Effective.
• Black List Properties From Controlled Doc[]
o (Optional) List of properties that should not be copied to released version.
• White List Properties From Working Copy[]
o (Optional) List of properties that if available are to be copied from the working copy to released
version.
• Disable UI
o (Optional) Boolean flag, if true hides the version control change actions from the user interface.

4.17.4 VERSIONING SCHEMES

Any number of different versioning schemes can be configured under Schemes[]. Each scheme block contains the
following.

• Identifier
o Unique identifier of the scheme.
• Name
o Human readable name of the scheme.
• Description
o (Optional) Description text of the scheme.
• Synchronization Level
o (Optional) 0-indexed level number, specifying which version level shall synchronize the branches.
0 = Top level only, 1 = levels 0 and 1 are synchronized, 2 = levels 0, 1 and 2 are synch…
-1 = No synchronizing (Default).
• Levels[]
Array of numbering levels.
o Name
▪ Human readable name of the level.
o Description
▪ (Optional) Description text of the level.
o Action
▪ Text on action (button) used to increment in this level. Translatable content (see section
3.5).
o PropertyDef
▪ The property used to store this level value.
o Initial Value
▪ Initial integer or letter value used for this level’s version value. Default = 1.
▪ If the value is a letter (e.g. A) alpha versioning will be used
• i.e. A, B, C…Z, AA, AB…AZ, BA, BB…BZ, etc…
▪ If the value is a letter the case of the letter will be used when assigning the version.
• If "A" then the versions will be A, B, C, D, etc..
• If "a" then the versions will be a, b, c, d, etc..

Page 122 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
oWorkflow
▪ The workflow given to working copy of this level document.
o Version Collection Class
▪ (Optional) Class that if specified an object of this class is created to contain all records of
the document that have the same value for this level.
▪ Previous name: GroupRecords
o Initial Value Source
▪ (Optional) Property which if set in the versioned object is used to override the version
number.
▪ This property’s edit permissions should be restricted to only those who can override the
default versioning.
• Branch Properties[]
Array of branches. Currently, only one branch property definition is allowed per scheme.
o Name
▪ Human readable name of the branch.
o Description
▪ (Optional) Description text of the branch.
o Action
▪ Text on action (button) used to create new branch. Translatable content (see section 3.5).
o PropertyDef
▪ The SSLU property used to store this branch option and defining the branching choices.
o Allow Empty
▪ Boolean flag whether a branch can exist without value.
o Initial Value
▪ The initial value set to first branch of this version.
o Initial Value Source
▪ (Optional) Property that if set in the versioned object is used to override the branch value.
▪ This property’s edit permissions should be restricted to only those who can override the
default versioning.
o Workflow
▪ The workflow given to a working copy when it is just branched or synchronized.

A scheme can contain a configurable amount of version number levels. Controlled Version Label
(=M-Files.VersionControl.VersionLabel) value given to all working copies is created by concatenating the version level
values in definition order with period separator, and appended with a branch property value, if applicable.

Note: Changing these values may break any existing Controlled document objects. Make sure that there are no
Controlled documents in use using the modified scheme before doing any changes. Especially adding/removing
branch properties, versioning levels, or changing InitialValue type from integer to character will most likely
make old Controlled document objects unusable.

4.17.5 WORKFLOWS

Explicit mappings between custom workflows and various version control status can be defined in the optional
Workflows[] array. Version Control can utilize these to automatically update the workflow state when a status
changes or update the status when a workflow changes. Configuring the workflows in this way eliminates the need to
update the state and status properties via the workflow’s Set Property Action or via Automatic Transitions.

It is recommended to map all of a workflow’s states to a corresponding status as a form of documentation, but only
certain states and statuses for different objects will have an impact on the behavior of the system.

• Workflow

Page 123 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
oA reference to a custom workflow used by either a Controlled Document Collection, Working Copy,
Released Version or Version Collection.
• In Progress[]
o (Optional) A reference to the workflow’s state(s) that correspond to the "In Progress" status.
▪ Applicable to Controlled Document Collection workflows – the state will automatically be
set based on the controlled status.
• Approved[]
o (Optional) A reference to the workflow’s state(s) that correspond to the "Approved" status.
▪ Applicable to Working Copy workflows – the controlled status will automatically be set
based on the state.
• Released[]
o (Optional) A reference to the workflow’s state(s) that correspond to the "Released" status.
▪ Applicable to Controlled Document Collection workflows – the state will automatically be
set based on the controlled status.
▪ Applicable to Working Copy workflows – the controlled status will automatically be set
based on the state.
▪ Applicable to Released Version workflows – the controlled status will automatically be set
based on the state.
▪ Applicable to Version Collection workflows – the state will automatically be set based on
the controlled status.
• Effective[]
o (Optional) A reference to the workflow’s state(s) that correspond to the "Effective" status.
▪ Applicable to Released Version workflows – the controlled status will automatically be set
based on the state.
▪ Applicable to Version Collection workflows – the state will automatically be set based on
the controlled status.

• Retired[]
o (Optional) A reference to the workflow’s state(s) that correspond to the "Retired" status.
▪ Applicable to Controlled Document Collection workflows – the state will automatically be
set based on the controlled status.
▪ Applicable to Released Version workflows – the controlled status will automatically be set
based on the state.
▪ Applicable to Version Collection workflows – the state will automatically be set based on
the controlled status.
• Discarded[]
o (Optional) A reference to the workflow’s state(s) that correspond to the "Discarded" status.
▪ Applicable to Controlled Document Collection workflows – the state will automatically be
set based on the controlled status.

4.17.6 DISABLE AUTOMATIC PROPERTY UPDATES

By default, the Version Control module cascades changes to significant Controlled Document Collection properties to
the currently active (Released or Effective) Released Versions. The following setting can be used to disable this
functionality.

• Disable Property Sync


o (Optional) Boolean Flag

Page 124 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.17.7 DISABLE WORKING COPY AND RELEASED VERSION PREVIEW TABS

The Version Control module includes a UI extension that provides tabs to preview the Working Copies and Released
Versions of a Controlled Document Collection or Version Collection when it is selected in a listing. These preview tabs
can be disabled vault-wide using the following setting:

• Disable Previewer
o (Optional) Boolean Flag
o Default value = False (previewer enabled)
o Disables the working copy and released version preview tabs.

Note: This setting does not affect the behavior of M-Files' default Preview tab.

4.17.8 WARNINGS

• If using PDF Processing Instruction to convert the Released Version into a PDF, via some property which is
connected also to the Document Collection, make sure the PDF Processing Instruction is limited to the
Released Version class using related Workflow, or the conversion breaks the Working Copy or the Version
Controlled Document Collection.
• Avoid making configuration changes after controlled documents created using the old configuration exists in
the vault. You may need to manually modify the existing documents to match the new configuration.

4.18 VERSION CONTROL LITE

The Version Control Lite module provides customizable workflow driven controlled versioning for any objects.

4.18.1 TWO PUBLISHING MODES

The module can publish version controlled objects into two target types, single object and multi object versions. See
Published Version/Publish Option under 4.18.3.

The single object refers to mode where each publish action will re-use the one already created Published Version
object and only update its content with the current Controlled Working Copy properties and file(s).

In the multi object mode each publish action will create a new and separate Published Version object.

It's also possible to use both of the above modes simultaneously. There the first publish action will create two
Published Version objects, one for the single-mode, and the second for the multi-mode. These two objects differ only
by a single Is Single Published Version (=M-Files.VersionControl.IsSingleVersionPublished) property value. In the
following publish actions, the single-mode functionality will update its own Published Version object and the multi-
mode will create new Published Version object.

Automatic state transitions based on the value of Is Single Published Version can be used to create additional
difference to these two types of Published Version objects.

Page 125 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
4.18.2 REVERT TO EDITABLE FUNCTIONALITY

Defining some workflow states into Editable States[] will enable a functionality that can be used to revert the
Controlled Working Copy files to earlier editable state. All the workflows states which are not included in this list are
considered as non-editable.

When a Controlled Working Copy enters any editable state from any non-editable state the objects file content is
reverted to file content from the objects history when it last was in any editable state. This revert will lose all file
content related changes made in the intermediate non-editable states, such as file modifications, new file additions
and removals.

Example use case: Draft is an editable state, where the word document is edited. Then it's moved to non-editable
approved state and gets replaced with a read-only PDF file. Then the object continues to another non-editable state
where it's published. When the object returns to the editable Draft state after versioning the document gets reverted
to its last editable word document version allowing further modifications.

4.18.3 VERSIONING SCHEMES

Any number of different versioning schemes can be configured under Schemes[]. Each scheme block contains the
following.

• Identifier
o Unique identifier of the scheme.
• Workflow
o Identifier of a Workflow the scheme uses. The defined workflow must also be configured under the
Workflows[], see 4.18.4.
• ObjType
o Identifier of the Object Type accepted as a Controlled Working Copies.
• Single Published Version Property
o (Optional) Identifier of a SSLU property added to Controlled Working Copy to contain a relationship
to the Published Version object created by the Single Object publishing mode.
o Required in publish modes Single Object and Single And Multi. Value is ignored in Multi Object mode.
• Multi Published Versions Property
o (Optional) Identifier of a MSLU property added to Controlled Working Copy to contain a relationship
to all Published Version objects created by the Multi Object publishing mode.
o Required in publish modes Multi Object and Single And Multi. Value is ignored in Single Object mode.
• Latest Version Property
o (Optional) Identifier of a SSLU property added to Controlled Working Copy to contain a relationship
to the latest Published Version object. In Single Object publishing mode this property will have the
same value as the Single Published Version Property, but in Multi Object and in
Single And Multi -modes, this will contain the latest of the Published Version objects from the
Multi Published Versions Property created by the multi publishing.
o Default: No additional property used or added to Controlled Working Copy.
• Published Version
Object containing details about the published object.
o Class
▪ (Optional) Identifier of a class as which the Published Version is created.
▪ Default: Empty, the Published Version will be same class as the Controlled Working Copy.
o Workflow
▪ (Optional) Identifier of the workflow set for the Published Version object.

Page 126 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
▪ Default: No workflow is set (or the workflow of the given State or if no State is set, the
default workflow of the class is used or).
o State
▪ (Optional) The workflow state in which to set the Published Version object when being
published.
▪ Default: Empty, if Workflow is set, the first state of that workflow is used.
o Publish Options
▪ (Optional) Enumeration defining the Published Version mode, see 4.18.1.
▪ "Single Object" (Default)
• Single Published Version object created and updated.
▪ "Multi Object"
• Separate Published Version object created for each publishing action.
▪ "Single And Multi"
• An object for single Published Version is created and updated, and a separate
Published Version for each publishing is created.
o Single Object Version Purge
▪ (Optional) Boolean flag defining whether the old versions of the Published Version object
created by the single publishing mode are deleted when a new version is published.
Resulting the Published Version object history to only contain the latest version.
▪ Default: false, history is not cleared.
o Supersede Transitions
▪ (Optional) Array of workflow state transitions that are performed to existing multi
Published Version objects when a Publish action is performed. A transition from this list is
used when a Published Version is in a state that is the transitions from-state. Published
Versions that are not in any of these transitions from-states are not modified.
▪ Default: Empty list, old versions are not modified.
o Retire Transitions
▪ (Optional) Array of workflow state transitions that are performed to all Published Version
objects when Retire action is performed. A transition from this list is used when a Published
Version is in a state that is the transitions from-state. Published Versions that are not in any
of these transitions from-states are not modified.
▪ Default: Empty list, old versions are not modified by the Retire action.
o Original Property
▪ Identifier of a lookup property used to create version specific relationship to the Controlled
Working Copy from where the Published Version is created.
o Published From Property
▪ Identifier of a lookup property used to create relationship to the Controlled Working Copy
from which the Published Version is created.
o Black List Properties
▪ (Optional) List of properties that are not copied from the Controlled Working Copy to the
Published Version object. Special properties used by the Version Control Module (Is Version
Controlled (=M-Files.VersionControl.IsVersionControlled), PublishedVersion) are never
copied.
▪ Affects only property copying, so listing properties which the Controlled Working Copy does
not include, does not do anything.
▪ Default: Empty list, all properties are copied, unless White List Properties are set.
▪ If any blacklist properties are defined, the whitelist must be empty. See
White List Properties.
o White List Properties
▪ (Optional) Exclusive list of properties that are the only properties copied from the
Controlled Working Copy to the Published Version object.
▪ Affects only property copying, so listing properties which the Controlled Working Copy does
not include, does not add the properties to Published Version.

Page 127 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
▪ Default: empty list, all properties are copied, unless Black List Properties are set.
▪ If whitelist is defined, any other properties are not copied, that includes the version number
and name properties. So be sure to list all required properties to copy.
▪ If any whitelist properties are defined, the blacklist must be empty. See
Black List Properties.

4.18.4 WORKFLOWS

Different versioning workflows are configured under Workflows[]. Each section in this array shall contain the
following.

• Workflow
o Identifier of a Workflow.
• Editable States
o (Optional) List of workflow states from the above Workflow, used as Editable for the Revert To
Editable feature, see 4.18.2.
o Default: Empty, functionality is not used.
• Levels[]
Array of numbering levels in order. At least one level is required.
o Name
▪ Level name.
o Property
▪ Identifier of the integer or text property used to store this level value.
o Initial Value
▪ Initial integer or letter value used for this level’s version value.
▪ If the value is a letter (e.g. A) alpha versioning will be used ()
• i.e. A, B, C…Z, AA, AB…AZ, BA, BB…BZ, etc…
▪ If the value is a letter the case of the letter will be used when assigning the version.
• If "A" then the versions will be A, B, C, D, etc..
• If "a" then the versions will be a, b, c, d, etc..
• Actions[]
Array of actions. At least one Publish action must be configured.
o Type
▪ The type enumeration of this action.
▪ "Version"
• Will version the Controlled Working Copy according to the versioning scheme.
Updates version number(s).
▪ "Publish"
• Will publish the Controlled Working Copy according to the versioning scheme.
Creates or updates the Published Version object(s) and performs the
Supersede Transitions to the Published Version object(s).
▪ "Retire"
• Will retire the Published Version object(s) according the versioning scheme, by
performing the Retire Transitions to the Published Version object(s).
▪ "Demote"
• Will remove Controlled Working Copy from the versioning control. Removes the
version control properties (Is Version Controlled, Version Properties, Controlled
Version Label (=M-Files.VersionControl.VersionLabel) and the workflow from the
Controlled Working Copy.
• Demote action must be attached to a transition which has the "(no state)" as its
end-state.
o Transitions

Page 128 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
▪ (Optional) List of state transition identifiers when this action will get performed.
▪ Default: Empty list, any transition does not cause this action.
▪ At minimum, one transition or one state must be defined. See States.
o States
▪ (Optional) List of workflow state identifier when this action will get performed. Only
changing into one of these states will trigger the action.
▪ Default: Empty list, moving to any state does not cause this action.
▪ At minimum, one transition or one state must be defined. See Transitions.
o Level
▪ (Optional) Index of the level which is incremented by the Version-action.
▪ Default: 1.
▪ Only used if Type is "Version".

4.18.5 WARNINGS

The Version Control Lite module does not change the Controlled Working Copy or Published Version objects
permissions, so the design of the workflows used must take care of all those.

5 ISSUES TO REMEMBER

5.1 PERMISSIONS

The sample configuration and the vault structure delivered with the Compliance Kit is technology oriented and might
not be suitable for actual production use due to too allowing permission settings. Care must be used when defining
the customized solution. This chapter contains a non-exclusive lists of items which need to be looked at.

• The property Controlled Status used by Version Control module controls the state of the document, but as the
workflow in most cases shall be the tool move object between the states, making the property read-only is
recommended.
• Modifying the property User Account in Person objects allows impersonation, so making the property read-
only is recommended.

Page 129 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION
6 MAJOR CHANGES IN THE DOCUMENT

Version
1.0 Initial Version
1.x Module configurations added and corrected.
2.0 Release version for Compliance Kit 2.1.
2.1 Fork for Compliance Kit 2015.1.
2.2 Documentation added and updated for Compliance Kit 2015.1.
3.0 Release Version for Compliance Kit 2015.1
3.1 Documentation added and updated for Compliance Kit 2015.2.
3.2 Documentation added and updated for Compliance Kit 2015.3.
3.2.1 Added to note to section 5.6 regarding MaxToExportAtOnce.
3.2.2 Corrected example code error in 5.15.1 - File Version.
3.3 • Documentation added and updated for Compliance Kit 2018.
• Removed section 3, Customizing Installations, as the application license is now the way to
alter which modules are available.
• Removed Theme Editor section as it is now a separate document
• Removed Reference Documents section as there are no longer referenced documents
4.0 Finalized for Compliance Kit 2018
4.1 Document naming updated
4.2 Nonfunctional links removed
4.3 Updated document to reflect changes required to make Compliance Kit multi-server mode
compatible.
4.4 Added section 0. Additionally, added a note to section 4.8.1 about "After Interactive OK Message"
not being shown if "Open File" is set to true.
4.5 Version requirement updated.
4.6 Small updates throughout the document.
4.7 Note added to section 4.15.4.
4.8 Added new Log Exporter export providers section.
4.9 Documentation added and updated for Compliance Kit December '21 update.
• Added a reference to the separate upgrade instructions
• Added section about Status Overview in Compliance Kit dashboard
• Deprecated Related Object Rules section
• Deprecated Assignment Class Permissions
• Added Fast Browsing section
• Added note about Home Screen Application in Calendar Event configuration
• Added note about PDF Processor improvements
5.0 Updates in sections 3.6.3 and 4.7.1.

Page 130 of 130

CONFIDENTIAL PROPERTY OF M-FILES CORPORATION, DO NOT COPY OR PUBLISH ONLINE WITHOUT AUTHORIZATION

You might also like