# Security Configuration
Settings in the Security section of the CRM Configuration screen. They set the permissions that ContactManager puts on a new record the moment it is created: who may read it, change it and manage its permissions. See Permissions for the permission model itself.
# Table of Contents
- How the settings are applied
- Built-in defaults
- Entry order: the first match wins
- Configuration Reference
- Examples
- Points to watch
# How the settings are applied
The settings are applied when a contact, activity (including matters, documents and opportunities) or folder is created. They are applied again, using the record's field values at that moment, in two cases:
- a matter is saved in the matter screen while the matter Permissions field is shown and left empty (see Matter Permissions);
- the
ReassignSecurityimport is run for the record.
Changing the settings changes existing records only through these two paths.
The settings are a list of entries. Each entry applies to one record type, optionally only when a field of the new record has a specific value — for example matters of one activity type (the Legal/Notary field on the matter).
ContactManager takes the first entry in the list that matches the new record, and uses only that entry. See Entry order.
If no entry matches, the new record gets no permissions of its own and inherits everything from its parent.
The settings are entered as XML. The list starts with <Security> and <Items>, and each entry is
a <SecurityConfiguration> element:
<Security>
<Items>
<SecurityConfiguration>
...
</SecurityConfiguration>
<SecurityConfiguration>
...
</SecurityConfiguration>
</Items>
</Security>
# Built-in defaults
Out of the box the list has three entries, in this order:
| Order | Record type | Inherits from parent | Permissions set on the new record |
|---|---|---|---|
| 1 | Contact (persons, companies, employees, company departments) | Yes | Creator: Change Permissions. Administrators role: Owner. |
| 2 | Activity (also matters, documents, opportunities) | Yes | Creator and responsible user: Change Permissions. Administrators role: Owner. |
| 3 | IFolder (contact, search and subscription folders) | Yes | Administrators role: Owner. |
The creator gets Change Permissions, not Change. Whether the creator can read and change the record afterwards depends on what the parent passes down. See Default permissions on a new record.
The built-in defaults as XML:
<Security>
<Items>
<SecurityConfiguration>
<UseInheritedSecurity>true</UseInheritedSecurity>
<Field />
<FieldValue />
<Type>Contact</Type>
<Permissions>
<SecurityConfigurationPermission>
<PrincipalType>Creator</PrincipalType>
<Name />
<Allow>true</Allow>
<Permission>ChangePermissionsPermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Principal</PrincipalType>
<Name>Administrators</Name>
<Allow>true</Allow>
<Permission>OwnerPermission</Permission>
</SecurityConfigurationPermission>
</Permissions>
</SecurityConfiguration>
<SecurityConfiguration>
<UseInheritedSecurity>true</UseInheritedSecurity>
<Field />
<FieldValue />
<Type>Activity</Type>
<Permissions>
<SecurityConfigurationPermission>
<PrincipalType>Creator</PrincipalType>
<Name />
<Allow>true</Allow>
<Permission>ChangePermissionsPermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Owner</PrincipalType>
<Name />
<Allow>true</Allow>
<Permission>ChangePermissionsPermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Principal</PrincipalType>
<Name>Administrators</Name>
<Allow>true</Allow>
<Permission>OwnerPermission</Permission>
</SecurityConfigurationPermission>
</Permissions>
</SecurityConfiguration>
<SecurityConfiguration>
<UseInheritedSecurity>true</UseInheritedSecurity>
<Field />
<FieldValue />
<Type>IFolder</Type>
<Permissions>
<SecurityConfigurationPermission>
<PrincipalType>Principal</PrincipalType>
<Name>Administrators</Name>
<Allow>true</Allow>
<Permission>OwnerPermission</Permission>
</SecurityConfigurationPermission>
</Permissions>
</SecurityConfiguration>
</Items>
</Security>
# Entry order: the first match wins
An entry matches a new record when:
- the record is of the entry's Type, or of a type derived from it; and
- the entry has no Field, or the record's Field has the value in FieldValue.
ContactManager checks the entries from top to bottom and stops at the first match. A more general entry therefore hides every more specific entry below it.
A matter is a kind of activity, so the Activity entry also matches every new matter. To give
matters their own permissions, add an entry with Type Matter and put it above the
Activity entry. If the Matter entry is below Activity, the Activity entry wins and the
Matter entry is never used.
The same applies to documents and opportunities under Activity, to persons and companies under
Contact, and to contact folders under IFolder. As a rule, order the entries from most specific
to most general:
- a type with a field condition (for example
Matterwhere the activity type isMATTER_PRIVATE); - the same type without a condition (
Matter); - the general type (
Activity).
# Configuration Reference
# Entry
Each <SecurityConfiguration> entry has these elements:
| Element | What it does | Values | Default |
|---|---|---|---|
| Type | The record type the entry applies to. Also applies to types derived from it. | A name from Record types | — (required) |
| Field | Optional condition: the field of the new record to check. Leave empty to apply the entry to every record of the type. Use a dot to read a field of a linked record, for example ActivityType.Code for the code of a matter's activity type (the Legal/Notary field). | A field name, or empty | empty |
| FieldValue | The value the Field must have for the entry to match. The comparison is not case-sensitive. | Text | empty |
| UseInheritedSecurity | Whether the new record inherits the permissions of its parent. Set to false to make the record use only the permissions of this entry. | true or false | true |
| Permissions | The permissions to set on the new record: a list of <SecurityConfigurationPermission> lines. | See Permission line | empty |
# Permission line
Each <SecurityConfigurationPermission> line gives one permission to one user, role or kind of
user:
| Element | What it does | Values |
|---|---|---|
| PrincipalType | Who gets the permission. | Creator — the user who created the record. Owner — the record's responsible user. OwnerSub — the record's second responsible user. Principal — the users or roles named in Name. |
| Name | Only for Principal: the name of a user or role. Separate several names with a comma or semicolon. A name that does not exist is skipped. Leave empty for the other types. | User or role names |
| Allow | true gives the permission; false denies it. See Allow and Deny. | true or false |
| Permission | The permission. | A name from Permission names |
Owner works on activities (including matters, documents and opportunities), contacts, and
contact, search and subscription folders. OwnerSub works on matters and contacts. A line is
skipped when the field is empty at the moment the settings are applied; for a contact created in
the screens that is usually the case, so the line takes effect when the settings are applied again.
Owner and OwnerSub use the responsible user and second responsible user the record has at the
moment the settings are applied:
- A matter created by an import or an integration gets its responsible user on creation, so
Ownerworks. The second responsible user is filled in afterwards, soOwnerSubfinds nobody. - In the matter screen, the settings are applied again at the end of the save when the matter Permissions field is shown and left empty (see Matter Permissions). Both lines then use the users chosen in the form.
- In the matter screen without that field,
Owneris the user who creates the matter andOwnerSubfinds nobody.
# Record types
Use one of these names in Type:
| Type | Applies to |
|---|---|
Contact | Every contact: persons, companies, employees, company departments |
Person | Persons |
Company | Companies |
Employee | Employees |
CompanyDepartment | Company departments |
Activity | Every activity, including matters, documents and opportunities |
Matter | Matters |
Document | Documents |
Opportunity | Opportunities |
IFolder | Contact folders, search folders and subscription folders. Other folders do not get these settings. |
ContactFolder | Contact folders |
# Permission names
In Permission, use the name in the right-hand column. Case does not matter.
| Permission (as shown in the permission screens) | Name in the Security settings |
|---|---|
| Owner | OwnerPermission |
| Read | ReadPermission |
| Read summary | ReadSummaryInfoPermission |
| Change | ChangePermission |
| Remove | RemovePermission |
| Read Permissions | ReadPermissionsPermission |
| Change Permissions | ChangePermissionsPermission |
| List items | EnumerateChildNodesPermission |
| Create new items | CreateChildNodesPermission |
| Remove items from folder | RemoveChildNodesPermission |
| Create new folder | CreateFolderPermission |
| Change Folder | ChangeFolderPermission |
| Remove Folder | RemoveFolderPermission |
| Change Important Information | ChangeCompanyNamePermission |
| Change Marketing Information | ChangeMarketingInformationPermission |
| Verify | VerifyPermission |
# Examples
The examples below show only the entries that are added. Keep the built-in Contact, Activity
and IFolder entries in the list, below the new entries.
# Example 1: Private matters for one activity type
Matters of the activity type (Legal/Notary) with code MATTER_PRIVATE must be visible only to
the creator, the responsible user and the Finance role. Other matters keep the default
behaviour.
The entry has Type Matter and the condition ActivityType.Code = MATTER_PRIVATE.
Inheritance is switched off, so the permissions of the contact or folder the matter is created
under do not apply.
<SecurityConfiguration>
<UseInheritedSecurity>false</UseInheritedSecurity>
<Field>ActivityType.Code</Field>
<FieldValue>MATTER_PRIVATE</FieldValue>
<Type>Matter</Type>
<Permissions>
<SecurityConfigurationPermission>
<PrincipalType>Creator</PrincipalType>
<Name />
<Allow>true</Allow>
<Permission>ChangePermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Owner</PrincipalType>
<Name />
<Allow>true</Allow>
<Permission>ChangePermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Principal</PrincipalType>
<Name>Finance</Name>
<Allow>true</Allow>
<Permission>ReadPermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Principal</PrincipalType>
<Name>Administrators</Name>
<Allow>true</Allow>
<Permission>OwnerPermission</Permission>
</SecurityConfigurationPermission>
</Permissions>
</SecurityConfiguration>
Put this entry above the Activity entry. Always give someone Owner or
Change Permissions (here: the Administrators role), so the matter never ends up without
anyone who can manage its permissions.
# Example 2: Different groups per activity type
A firm has two matter activity types (Legal/Notary): litigation (code MATTER_LIT) and
notarial (code MATTER_NOT). Litigation matters may be changed by the Litigation role and read
by the Notarial role; notarial matters the other way around. The Staff role may read both. All other matters, and all other activities,
keep the default behaviour.
The order of the list:
MatterwhereActivityType.Code=MATTER_LITMatterwhereActivityType.Code=MATTER_NOTContact(built-in)Activity(built-in)IFolder(built-in)
<SecurityConfiguration>
<UseInheritedSecurity>false</UseInheritedSecurity>
<Field>ActivityType.Code</Field>
<FieldValue>MATTER_LIT</FieldValue>
<Type>Matter</Type>
<Permissions>
<SecurityConfigurationPermission>
<PrincipalType>Creator</PrincipalType>
<Name />
<Allow>true</Allow>
<Permission>ChangePermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Principal</PrincipalType>
<Name>Litigation</Name>
<Allow>true</Allow>
<Permission>ChangePermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Principal</PrincipalType>
<Name>Notarial; Staff</Name>
<Allow>true</Allow>
<Permission>ReadPermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Principal</PrincipalType>
<Name>Administrators</Name>
<Allow>true</Allow>
<Permission>OwnerPermission</Permission>
</SecurityConfigurationPermission>
</Permissions>
</SecurityConfiguration>
<SecurityConfiguration>
<UseInheritedSecurity>false</UseInheritedSecurity>
<Field>ActivityType.Code</Field>
<FieldValue>MATTER_NOT</FieldValue>
<Type>Matter</Type>
<Permissions>
<SecurityConfigurationPermission>
<PrincipalType>Creator</PrincipalType>
<Name />
<Allow>true</Allow>
<Permission>ChangePermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Principal</PrincipalType>
<Name>Notarial</Name>
<Allow>true</Allow>
<Permission>ChangePermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Principal</PrincipalType>
<Name>Litigation; Staff</Name>
<Allow>true</Allow>
<Permission>ReadPermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Principal</PrincipalType>
<Name>Administrators</Name>
<Allow>true</Allow>
<Permission>OwnerPermission</Permission>
</SecurityConfigurationPermission>
</Permissions>
</SecurityConfiguration>
# Example 3: The second responsible user on every matter
Every new matter, whatever its type, must also give Change Permissions to its second responsible user. Inheritance stays on, so the matter still gets the permissions of its contact or folder.
The entry has Type Matter and no Field, so it matches every matter. It must be above the
Activity entry. When combined with examples 1 or 2, put it below their entries: an entry without
a condition would otherwise hide the entries with a condition.
The OwnerSub line only takes effect when the settings are applied after the second responsible
user is filled in: in the matter screen with the Permissions field shown, or through the
ReassignSecurity import. See
Permission line.
<SecurityConfiguration>
<UseInheritedSecurity>true</UseInheritedSecurity>
<Field />
<FieldValue />
<Type>Matter</Type>
<Permissions>
<SecurityConfigurationPermission>
<PrincipalType>Creator</PrincipalType>
<Name />
<Allow>true</Allow>
<Permission>ChangePermissionsPermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Owner</PrincipalType>
<Name />
<Allow>true</Allow>
<Permission>ChangePermissionsPermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>OwnerSub</PrincipalType>
<Name />
<Allow>true</Allow>
<Permission>ChangePermissionsPermission</Permission>
</SecurityConfigurationPermission>
<SecurityConfigurationPermission>
<PrincipalType>Principal</PrincipalType>
<Name>Administrators</Name>
<Allow>true</Allow>
<Permission>OwnerPermission</Permission>
</SecurityConfigurationPermission>
</Permissions>
</SecurityConfiguration>
An entry replaces the Activity entry for the records it matches; it does not add to it. Repeat
the lines of the Activity entry you want to keep, as the creator, owner and Administrators
lines above.
# Points to watch
- Order matters. A new entry for
Matter,Document,Opportunity,PersonorCompanyhas no effect when it is below the generalActivityorContactentry. - The condition is checked each time the settings are applied. Use a field that is known when the record is created, such as the activity type. Changing the activity type of an existing matter changes its permissions only when the settings are applied again (see How the settings are applied).
- Use the activity type, not the Matter Type. A matter has both a Legal/Notary field (its activity type) and a Matter Type field. Only the activity type can be used as a condition: the matter screen fills in Matter Type after the matter is created, so it is still empty when the settings are applied.
- Use the code, not the name, of the activity type.
ActivityType.Codecompares the code of the activity type;FieldValuemust hold that code. - Matter activity type codes start with
MATTER. The Legal/Notary field only offers activity types whose code starts withMATTER, and a matter without a choice getsMATTERitself. A FieldValue such asPRIVATEtherefore never matches a matter created in the screens; use for exampleMATTER_PRIVATE. - Switching off inheritance means only the permissions in the entry apply. Include everyone who must see the record, and at least one user or role with Owner or Change Permissions.
- Existing records keep their permissions until the settings are applied again. To apply
changed settings to existing records, run the
ReassignSecurityimport. For a single matter, save it with an empty Permissions field (see Matter Permissions).