Featured image of post D365 Org DB Settings - Email

D365 Org DB Settings - Email

On a client recently I helped deploy Microsoft D365 App for Outlook. Unfortunately, the behaviour requested by the client and the default behaviour of the Server Side synchronisation was not aligned.

This led to long discussions with Microsoft about some of the DB Org Settings we could utilise to tweak the way SSS works. As I researched these settings and discussed with my colleagues and during networking events, it became clear they remain unknown to most developers and administrators. If your deployment needed to tweak the settings, then people knew, but it is not common knowledge.

Further, there seemed to be very little documentation on what each setting does, apart from Microsoft’s own information here.

This is a series of posts explaining each of the Org settings, understanding how it affects your environment. Hopefully it will raise awareness of these settings.

Bear in mind that there a lot of settings that I can not find any information on or have no experience on. This is frustrating for me, but assume someone in the community will push me in the right direction and I will update the page when I find out.

How to Change Org DB Settings

Sean McNellis has an excellent tool on GitHub here which allows interaction with the org settings via a solution in your environment.

One the solution is imported, selecting the solutions gives you an interface where you can check the current status of each setting and change them.

To change the default, you need to select the Add hyperlink. This creates an XML file including your property which is uploaded to your system to change the setting.

Selecting the Edit link for the attribute now gives you a popup window, where you can edit the value

Also, Sean has included a copy of the Microsoft description with each setting.

On the right side of the grid is a link to to the KB article that mentions the setting, though normally it is just to KB 2691237 which is the central list of all Org settings.

ActivityRollupChildRecordLimit

Default Value50,000
TypeNumber
DescriptionLimit the number of total aggregated activities to rollup in the Activity Rollup
Default:50,000.
Used with: VisibleRecordThreshholdSwitchToMultiplelineTVF
and TotalRecordThreshholdSwitchToMultiplelineTVF
Min Version9.1.0.8031
Max Version

This is a new one on me. Activities roll up. You put an email against a contact, the email is available on the account the contact is associated with. This applies to custom entities as well, if you configure the relationship correctly. Inogic has a great post on it here.

This setting must have come about to limit this as the numbers where getting too big for some. I have not got the data to do this one justice unfortunately.

AddressBookMaterializedViewsEnabled

Default ValueTrue
TypeBoolean
DescriptionChanges the way the CRM Client queries SQL CE
Min Version5.0.9690.2903
Max Version

The description doesnt tie up with the title, and when you google it, this setting revolves around a previous setting, Disable MAPI cache, that was around in CRM 2011 and helped improve performance. Not a lot more I can say.

AllowPromoteDuplicates

Duplicates in D365 are not unheard of, but when Outlook sync comes in, there are more chances to get duplicates. When a user syncs an Outlook Contact,

AllowSaveAsDraftAppointment

Default ValueFalse
TypeBoolean
DescriptionSetting value to true will provide the capability to create appointments in Dynamics 365
as “draft” without synchronizing with Exchange.
Appointment form will have a “Save as Draft” command and a “Send” command, so that you
can save, add details and update an appointment activity without synchronizing to Exchange.
Default value is set to false to preserve existing behavior.
Min Version
9.0.2.2275
Max Version

This flag opens up the possibility that you don’t always get a meeting correct the first time and allows you to save a draft.

Ulrik Carlsson aka @CRMChartGuy from eLogic solutions has a great article about this attribute.

The default behaviour is that users are not presented with a Save as Draft option for appointments, when a appointment is saved, if you are using SSS it will synchronise to Outlook and send out invites to the attendees as normal.

If you change AllowSaveAsDraftAppointment to true, the users get a different set of buttons.

Both Send and Send & Close buttons behave like the original Save and Save & Close. They will initiate a server side sync one the record is saved.

The new button Save as Draft will save the appointment but not send it to Outlook etc. It adds a [Draft] prefix to the appointment header and also a new field on the appointment, isdraft, is populated with true.

Weirdly, this field can not be added to a form. It just doesn’t appear in the field list. You can add it as view filter criteria, but you can’t display it as a column in a view.

AutoCreateContactOnPromote

Default ValueTrue
TypeBoolean
DescriptionDisables the ability of the organization to create contact records automatically when an email
message is tracked in CRM. This option can also be disabled from the user settings area
for each user.
False - Disables the automatic creation of contacts.
True - Enables the automatic creation of contacts.
Min Version5.0.9688.583
Max Version

By default, when a user sets regarding within the Outlook app, if any email address is in the To / CC / BCC etc that D365 does not know about, it creates it automatically.

Most of the time this is fine, but consider when your business process requires a lot more data fields to be populated in the contact, this default process will create a contact that hasn’t got what your business needs. Forcing the contact creation away from this automation may be required.

Users have an option under their personal settings which will mimic this settings, but this does it for everyone.

Setting the AutoCreateContactOnPromote to false removes the option from users and no contacts are created automatically when emails etc are synced.

AutoTrackSentFolderItems

Default ValueFalse
TypeBoolean
DescriptionSetting value to TRUE will result in Server Side Sync auto tracking of emails from Sent Items.
This setting only applies if the mailbox is configured to track "All Email Messages"
Default value is set to False to preserve the existing behavior.
To enable functionality on the organization "AutoTrackSentFolderItems" should be set to True.
Min Version8.2.2.0840
Max Version

This setting works in hand with the selected option under “Select the email messages to track in D365” option under Personal Options.

By default, sent emails are ignored, only picking up emails that arrive to send to D365.

By marking the AutoTrackSentFolderItems to true, sent items will also be tracked, from the next sync, not retrospectively

BackgroundSendBatchSize

Default Value10
TypeInteger
DescriptionSets the number of email messages to download in one batch for the BackgroundSend API.
Min Version5.0.9690.583
Max Version

ClientDisableTrackingForReplyForwardEmails

Default ValueFalse
TypeBoolean
DescriptionEnables a user not to automatically track replies and forwarded email messages.
Set this to "True" to disable tracking replies and forwarded email messages. 
 NOTE: This setting only applies to Dynamics 365 for Outlook (not Dynamics 365 App for Outlook).
Min Version5.0.9690.2903
Max Version

When a user receives a reply to an email that has already been tracked, the reply will also be tracked by default. This is great for keeping the chains of emails all within D365. Unfortunately, this may lead to conversations being tracked that shouldn’t and give visibility to sensitive conversations - a manager receiving an email that was a complaint about a particular email that their report sent for example.

Whilst this is mostly a training exercise, it can be quite embarrassing and this setting stops that. It does mean that you could lose out on a part of a conversation and rely on the user to track a response separately.

This settings, as noted, only works with D365 for Outlook not the App for Outlook.

DisableClientUpdateNotification

Default ValueFalse
TypeBoolean
DescriptionSetting DisableClientUpdateNotification to true will disable the outlook client from checking for newer versions
Min Version7.0.0000.3027
Max Version

Only for the D365 for Outlook, will prevent the application checking for a new version. This will help if you are in a locked down environment and need the stability.

With the D365 App for Outlook, it is a constant deployment rolled out with other fixes by Microsoft.

DisableImplicitSharingOfCommunicationActivities

Default ValueFalse
TypeBoolean
DescriptionChanging this to "True" will disable implicit sharing of records to recipients that are added to existing activities.
Min Version5.0.9690.2903
Max Version

When an email, meeting, phone call etc. is created and an internal user is included in the recipients list, it shares the record with them. This allows the internal user to have visibility of the record within D365.

If your security model has an issue with this, then this implicit sharing can be removed.

Your model may restrict the visibility of activities depending on what record the activity is associated with in a team scenario. If the original recipient is no longer in the team, they should not have access to that information any longer. With the OOTB logic, this activity will still be visible.

This email will still be in the recipients Outlook, nothing changes to the visibility in exchange, it is just the visibility in D365.

DisableLookupMruOnOutlookOffline

Default ValueFalse
TypeBoolean
DescriptionLookupMRUItems in UserEntityUISettings can cause a large data volume when going online,
setting this to true will stop MRU's from syncing back ONLINE
Min Version6.1.0002.0106
Max Version

This one is not obvious to me and there is no information online. I’ll update when I find anything out

DisableMapiCaching

Default ValueFalse
TypeBoolean
DescriptionWhen this value is set to "True," users can still pin the views. However, the query is sent to the
CRM Server to retrieve the results instead of to the local cache to prevent performance issues.  

Note This value is not valid with CRM 2013.
Min Version5.0.9690.2903
Max Version

This was present to prevent server performance issues, typically seen with on-premise solutions, when results are retrieved from the cache of the server, rather than direct from the database. It is unclear if still needed.

DisableSmartMatching

Default ValueFalse
TypeBoolean
DescriptionDisables the smart matching functionality and relies on the tracking token on the incoming e-mails for email tracking.
False - Enables smart matching.
True - Disables smart matching.
Min Version5.0.9688.583
Max Version

Smart Matching is how Microsoft works out that the email you just sent in belongs to a conversation that you have already synced, hence it will sync that email when it comes in.

In System Settings, you have several options when it comes to matching. Correlation is the default, where it is using a conversation id on each email to match them. You can supplement this with a tracking token and/or smart matching.

Token is generally used for support scenarios, to ensure any replies to an email are tracked against the same case.

Smart matching does what it suggests, using keywords in the subject and an algorithm to determine if the email is linked to a previous conversation.

Using the DisableSmartMatching flag does the same as un-ticking the box on the system settings, where conversation id and tracking tokens are relied on.

DistinctPhysicalAndLogicalDeletesForExchangeSync

Default ValueFalse
TypeBoolean
DescriptionServer-Side synchronization needs a mechanism to distinguish between Logical and Physical deletes of entities in CRM
False : No distinction between physical and logical deletes for exchange sync delete scenario
True : Physical and logical deletes will be distinguished for exchange sync delete scenario
Min Version8.2.2.0840
Max Version

This is another where security takes over and users expectations can differ from the way Microsoft thinks it should work.

If a user has been invited to a meeting, and it is recorded in D365, a copy of that exists within D365 and Exchange. If, for whatever reason, the user loses access (reas access) to that meeting in D365, the default behaviour would be to delete the copy in Exchange. Makes sense, to keep those in sync.

With the DistinctPhysicalAndLogicalDeletesForExchangeSync set to true, lose of access to any activity does not mean that the activity is deleted in Exchange. Use this with DisableImplicitSharingOfCommunicationActivities to fully get control of activity access.

DoNotIgnoreInternalEmailToQueues

Default ValueVersion 5.0.9690.1533 to 8.2.2.1300: False
Version 8.2.2.1309 and higher: True
TypeBoolean
DescriptionIf you disable the "Track email sent between CRM users as two activities" setting,
email messages from a CRM user to a queue are not delivered.
Additionally, if a workflow rule sends an email message to a queue,
email messages that are sent by the workflow rule are not delivered.
False - Internal email messages to queues will not be delivered.
True - Internal email messages to queues will be delivered.
Min Version5.0.9690.1533
Max Version

This is used in combination with the Track emails sent between Dynamics 365 users as two activities available in the system settings

If you enable the Track as a separate option, normally any email from internal user to a queue mailbox will be ignored. This seems a weird consequence, but they have provided you with an override so that these internal mails are not ignored.

EnableAppointmentBroadcastingForOutlookSync

Default Value0
TypeNumber
DescriptionSetting for Appointment broadcasting for Outlook Synchronization
Min Version7.0.1.121
Max Version

I can’t find any information on this. Will update when I find out.

EnableCrmStatecodeOnOutlookCategory

Default ValueTrue
TypeBoolean
DescriptionEnables Statecode data on contact sync
Min Version6.1.0.581
Max Version

EnableSssItemLevelMonitoring

Default ValueFalse
TypeBoolean
DescriptionSetting value to True will enable a new dashboard accessible by users and administrators
called Server-Side Synchronization Failures.
This dashboard allows the owner of a mailbox to have information about all non-synched
incoming/outgoing emails and also appointment, contact, and task (ACT) items.
Information is provided for the reason items are not synchronized.
Default value is set to False to preserve the existing behavior.
You can use the ExchangeSyncIdMappingPersistenceTimeInDays setting to control how
long the data for failed emails is retained.
Min Version8.2.2.1661
Max Version

There is a dashboard available to admin already called Server-Side Sync failures, without this setting. Not sure what this does, as the dashboard seems to be available regardless.

ExchangeSyncIdMappingPersistenceTimeInDays

Default Value3
TypeInt
DescriptionThe number of days for which the ExchangeSyncIdMappings are to be persisted for failed emails.
This setting is used in relation to the EnableSssItemLevelMonitoring setting.
It is not recommended to increase this value higher than 7 days as it can lead
to the table growing very large.
Min Version8.2.2.2059
Max Version

This setting defines how many days of sync failures are kept, useful when you are troubleshooting, but table will get huge quickly, so only increase if you need to.

ExpireSubscriptionsInDays

Default Value90
TypeNumber
DescriptionMax number of days before deleting inactive Outlook client subscriptions.
We recommend you keep this to the default unless you absolutely need to change it,
be mindful of keeping the tracking info too long, or deleting it too soon.
Min Version6.0.0.0
Max Version

On creating my second post in this series I came across several configurations that were not documented in the KB article and hence were missed when I wrote this.

When you track an contact in Outlook, you are subscribing to changes made to those contacts in D365 so that they are mimicked in your Outlook. This is great, but each subscription is stored in a database record, hence impacting storage costs. There is a deletion service that works through the subscriptions and deletes these expired lines. after the value is reached, with an outlook Client refreshing it’s subcriptions as part of it’s sync routine.the

HideEmailAutoTrackOptions

Default ValueFalse
TypeBoolean
DescriptionDefault value is false, if it's set to True: do not show the following track options in
Personal Options (Email): 'All email messages', 'Email messages from D365 Leads, Contacts
and Accounts', 'Email messages from D365 records that are email enabled'
Min Version9.1.0.1639
Max Version

This setting goes one further to the one below by stripping out “All email messages”, “Email messages from D365 Leads, Contact and Accounts” and “Email messages from D365 records taht are email enabled”, just leaving you with the two below.

HideTrackAllOption

Default ValueFalse
TypeBoolean
DescriptionRemoves “All email messages” option from users’ Personal Options under Email
tab Select the email messages to track in Microsoft Dynamics 365 area.
False – "All email messages" option is shown in the dropdown.
True – "All email messages" option is not shown in the dropdown.
If a user already has "All email messages" selected, their synchronization option is not updated
in DB. Administrators will need to update this value via SDK.
Min Version9.0.2.264
Max Version

Under personalisation settings for each user, they can decide to track all emails they receive from any source. Great for a shared mailbox or customer mailbox, but not for a normal user who receives spam and invites to cake sales etc.

The default here is Email messages in response to D365 mail, but to stop users filling your D365 instance, setting the HideTrackAllOption to true will remove that top option.

Any users that had this setting prior to it’s removal need to be updated manually or via the SDK.

IgnoreCopiedItemsInSSSForMailbox

Default ValueFalse
TypeBoolean
DescriptionIgnore creating duplicate for copied items for Server Side Sync
Min Version9.1.0.11129
Max Version

Normally, when an email or meeting or task is synced, it doesn’t matter where that content came from. If it appears new, it will be created new, even if it is a copy of another item. This will reduce the amount of synced items but may be a concern for your environment.

MailboxStatisticsPersistenceTimeInDays

Default Value3
TypeNumber
DescriptionIf value is 0, dont store ANY MailboxStatistics Data, if the value is greater than zero then
store that number of days statistics data. Max value arbitrarily chosen at 1 year,
this generates at lot of data so 1 year should be plenty of time
Min Version8.0.0.1088
Max Version

The Mailbox statistics records how frequently a mailbox is accessed and synced. This way, the more active mailboxes are synced more regularly. A mailbox that is infrequently used will be checked less regularly.

On a high user system, with SSS on, it can get populated quickly, so 3 days will normally be appropriate.

OutlookClientEmailTaggerEnabled

Default ValueFalse
TypeBoolean
Descriptionhere are 3 values for this Boolean setting - true, false, and NULL (which is the value when NOT set).
True: Will override any and all client registry setting to True.
False: Will override any and all client registry setting to False.
NULL: If the setting is NULL the outlook clients will use whatever is in the registry of the client.
TO SET THIS VALUE TO NULL YOU WILL NEED TO CLICK EDIT, THEN REMOVE THE VALUE
TO HAVE IT DEFAULT TO NULL.
Min Version7.0.1.121
Max Version

OutlookSyncDataSubscriptionClientsBatchSize

Default Value100
TypeNumber
DescriptionThis setting is used to determine how many record changes (deletes, inserts, and updates)
to send back to a syncing client for each request.
Min Version7.1.0.1059
Max Version

OverrideTrackInCrmBehaviour

Default Value0
TypeInt
DescriptionWhen this option is Enabled, the ‘Track in CRM’ button functions as the Set Regarding
button in Dynamics 365 for Outlook. In Dynamics 365 App for Outlook,
‘Track without regarding’ command is not displayed, with Set Regarding as
the only way to synchronize Outlook items to Dynamics 365.
0 - Normal behavior of the "Track in CRM" button not having to set a Regarding record
in Dynamics 365 for Outlook.
‘Track without regarding’ command is displayed in Dynamics 365 App for Outlook.
1 - The ‘Track in CRM’ button functions as the ‘Set Regarding’ button, and makes you
select a regarding record in Dynamics 365 for Outlook.
In Dynamics 365 App for Outlook, ‘Track without regarding’ command is not displayed,
with Set Regarding as the only way to synchronize Outlook items to Dynamics 365.
NOTE: This setting applies to both Dynamics 365 for Outlook and Dynamics 365 App for Outlook.
Min Version9.1.0.6200
Max Version

Normally, a user can track an activity to D365 without associating with a record, the Set regarding. This could lead activities in your tenant not associated with a record, orphaned. Depending on your business requirements, disabling this feature could be required.

Normally, under the … under Not Tracked, the user has an option to Track without Regarding

Setting OverrideTrackInCrmBehaviour to 1 will override this behaviour, removing the ellipses button altogether. The user has to establish a link to an existing record to sync the email or activity.

OverrideV5SenderConflictResolution

Default ValueFalse
TypeBoolean
DescriptionWhen multiple records with the same email address exist in the Dynamics CRM Organization
and email is automatically tracked, the email address is resolved to the record for the owner
record that was created first. This option lets you override that functionality.
False - E-mails are tracked to the first record created.
True - E-mails are not tracked automatically if there are multiple records
with the same email address.
Min Version5.0.9690.2243
Max Version

Michael Sulz has a good write up on this, here.

Normally, if there are 2 or more contacts with the same email address (data quality is always a problem, however much you take care of it, though data8 do a real good job of removing duplicates and improving your data) the contact chosen is the first contact owned by the syncing user, sorted by create date or the first created if that doesn’t match.

Setting this option to true will force the user to make a decision and not sync the email automatically.

RestrictIRMEmailItems

Default ValueFalse
TypeBoolean
DescriptionSetting value to TRUE will result in Server Side Sync NOT synchronizing ALL emails
that are marked as IRM emails.
Default value is set to False to preserve the existing behavior.
To enable this restriction on the organization " RestrictIRMEmailItems " should be set to True.
Min Version8.2.2.0840
Max Version

Bhavesh Shastri has a great write up of this configuration here

Restricted messages, those that the sender has marked as any of the restricted types in Azure information Protection, may not be suitable to be included in your D365 system.

If you set his flag to true, the user will not be able to sync those that are protected and will be given an error message if they try to.

SecuritySettingForEmail

Default ValueFalse
TypeNumber
Description1: Display a Warning Message And give an option to open -
2: Display a Warning Message and do not give an option to open
3: Do not display a Warning Message and do not give any option to open.
This setting is NOT SUPPORTED IN CRM2013 as of build 809
Min Version5.0.9690.3731
6.1.0.581
Max Version

The majority of emails that a user receives and hence sync to D365 contain HTML to some degree, whether it is simple formatting or full on marketing emails.

In all scenarios, the interface presents a stripped down version of the email, but formatting etc will be lost.

There is a risk when these are displayed in all their glory in D365, that parts of the email could be nefarious, including scripts etc that could include phishing or other attacks. Microsoft by default warns the user that this is the case, but allows the user to click through to the content, putting the decision in the users’ hands.

If you change the setting to 2, the link to the full content is removed

Changing the setting to 3 removes the message and always shows the full version of the email

SendEmailSynchronously

Default Value0
TypeInt
DescriptionIf you have a plugin registered on the email send flow, you should change this setting to "1." 
0 - Email is sent asynchronously.
1 - Email is sent synchronously.
Min Version5.0.9690.2720
Max Version

Depending on your logic, you may interact by workflow when an email is sent via Outlook. This setting moves the send email to a synchronous operation rather than asynchronous, allowing a more immediate interaction with the email. This may have a performance impact on the user in Outlook.

SortEmailByReceivedOn

Default ValueFalse
TypeBoolean
DescriptionWhen the Activities tab of the social pane is show, the data ordered by the 'modifiedon'
date in descending order, toggling this setting to True will enable the social pane to sort
emails by RecievedOn Desc instead of modifiedon
Min Version8.0.1.79
Max Version

I am not sure that this is a problem any more, in Social pane in D365 we have a lot of options for searching, but back in the legacy UI this allowed you to change the email sorting from the date the email was edited or added to D365 to the date the email was received. This could be several days difference, so it could give a different perspective to the conversation.

TraceExchangeSyncData

Default Valuetrue
TypeBoolean
DescriptionEnables exchange sync tracing
Min Version6.0.0.809
Max Version

Logging of the sync data is essential for any troubleshooting, but it adds to the size of your database. With the separation of log and data in storage costs, I am not sure this should ever be turned off if you are using SSS.

TrackAppointmentsFromNonOrganizer

Default ValueTrue
TypeBoolean
DescriptionEnabled users to track appointments organized by another Dynamics 365 user via
Dynamics 365 App for Outlook.
False  –  Dynamics 365 App for Outlook and Server-Side Synchronization users cannot track
Outlook appointments whose organizer is a Dynamics 365 user.
True  –  Dynamics 365 App for Outlook and Server-Side Synchronization users can track Outlook
appointments whose organizer is a Dynamics 365 user.
Min Version9.1.0.0294
Max Version

You can always track a meeting if it was sent from an external user and by default, you can track any appointment where the organiser is a D365 user. This setting prevents the user from tracking an appointment if it is not them organising it.

TrackCategorizedItems

Default ValueTrue
TypeBoolean
DescriptionSetting value to False will remove the category tracking flag and functionality.
Default value is set to True to allow category tracking and tracking status visibility for users
whom do not use Dynamics 365 for Outlook or Dynamics 365 App for Outlook.
Min Version8.2.2.0840
Max Version

Using Category based tracking is a great way to allow users to track multiple emails at once. In the App for Outlook, this is the only way.

With the OOTB behaviour, the user gets a new category added and is able to select multiple emails to sync. It also appears as a great indicator in Outlook that the activity is synced.

Setting the flag to false removes this category and ability.

Be warned on this, if you leave any item with the category on it after you have disabled this functionality, re-enabling the functionality will mean that these items will be synced. Also, this category doesn’t respect the fact you upgrade. An email with the category that was synced to an on premise version will create a duplicate if that user is moved to the online version and the originating email was migrated as part of the data migration from on-prem to online.

UseCrmOrganizerForEmptyExchangeOrganizer

Default ValueFalse
TypeBoolean
DescriptionUse the CRM Organizer of an Appointment if the Exchange Organizer doesn't exist.
Min Version8.1.1.1020
Max Version

I think this is more to do with rare cases when the sync doesn’t work correctly, but another one that I can not find any information for.

UseFilteringMethodOfSyncingMailboxOnlyForCorrelation

Default ValueFalse
TypeBoolean
DescriptionThis is for controlling which users’ filtering settings will be used  for correlation. 
False  – filtering method of all recipients of the email will be checked to decide if any
user/queue accepts email or not.
True  – filtering setting of user who synced email to CRM will be used. Filtering  setting
of other recipients of the emails will be ignored.
Min Version8.2
Max Version

Each user has a seperate filter list to decide which emails are synced to D365. These can be various settings on what that individual user requires.

The default for this setting, the standard OOTB behaviour, is false, where any user can sync this email if it matches their settings. True means that the user who created the email or synced it will be able to have the email included in the selection for the filter. It is in effect an additional filter for the user to only include emails I have created.

UsePlainTextForEmailTemplateBody

Default ValueFalse
TypeBoolean
DescriptionChanges the Email Template to use plain text where otherwise text with the following
symbols would not appear <text>.
Min Version5.0.9690.2720
Max Version

This is one of the older settings, presumably when people had email clients that could not handle html formatted text.

comments powered by Disqus
My views, nothing to do with anyone else
Built with Hugo
Theme Stack designed by Jimmy