D365 Org DB Settings – Other

This is the second of a series where I try to document all the rarely used settings available to your Dynamics organisation to tweak the standard behaviour.

If you want to tweak your settings, see my previous post, or if you want to use a canvas app, see this post.

ActivityConvertDlgCampaignUnchecked

Default ValueTrue
TypeBoolean
Description Controls the default value of the Record Closed Campaign Response option. When you convert an activity to an opportunity, this default option controls whether the source campaign is set or not.
False- Record Closed Campaign Response checked and source campaign will be set.
True – Record Closed Campaign Response not checked and source campaign is not set.
Min Version 5.0.9690.2720
Max Version

When you convert an activity to an opportunity, you have the option to populated a related campaign and also record a closed campaign response. This settings implies that you can default the Record a closed campaign response to true, forcing the selection of a campaign, but in my environment it isnt working.

Someone prove me wrong

ActivateAdditionalRefreshOfWorkflowConditions

Default ValueFalse
TypeBoolean
Description Enables an additional refresh of workflows that contain wait conditions and that may have to be resumed. This is required to be enabled to enable a fix that was originally released as a Critical On Demand hotfix, and was publically released starting with Update Rollup 13. When events in a Wait Until condition are met, the condition is not triggered as documented in KB 2918320 .
Min Version 5.0.9690.3445
Max Version 5.0.9690.3731

Redundant fix for what looks like an issue in a specific version

allowRoleAssignmentOnDisabledUsers

Default ValueFalse
TypeBoolean
Description Enables the assignment of a security role for user accounts with a disabled status. This allows for scenarios where stub users can be created and assigned a different security role. This is needed when a stub/disabled user account needs to own records, especially when these records are from custom entities where custom security roles are required.
False – By default, a security role cannot be assigned to users with disabled status. This is shipped by default.

True – Allows security role to be assigned to users with disabled status.
Min Version 9.1.0.5610
Max Version

There are lots of times, particularly around migrating systems, where you are not ready for users to have access to a new system but want to import their data. Think about where you are migrating department by department. The long-term goal would be for users to all have access, so temporarily assigning the records to another user or a system user may not be appropriate. Ownership is usually an indicator and first point of contact in most systems and a driver for security, etc.

Toggling this setting to true allows assignment of roles, therefore records to disabled or stub users.

Set to false, it displays this error message when you save any changes.

ChangeDoubleQuoteToSingleQuote

Default Valuefalse
TypeBoolean
Description Changes double quotation marks to single quotation marks within KB articles when the article is viewed.
Min Version 5.0.9690.3541
Max Version

This setting will do as it says, convert double quotes to single, but is only relevant for the old Knowledgebase Articles in your system, superseded by Knowledge articles that now have an appropriate WYSIWYG editor, this becomes redundant.

ClearSystemUserPrincipalsWhenDisable

Default ValueTrue
TypeBoolean
Description Clear and/or populates SystemUserPrincipals values for systemUsers when they’re disabled/enabled
Min Version 6.1.1.123
Max Version

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

ClientUEIPDisabled

Default ValueFalse
TypeBoolean
Description Disables the sending of customer experience feedback for the organization. This option can also be disabled from the user settings area for each user.
False – Enables the sending of experience feedback.
True – Disables the sending of experience feedback.
Min Version 5.0.9688.583
Max Version

This, apparently, disables the option to send feedback to Microsoft when you get an error, great little setting, but until I get a repeatable error, can not see it in action

CreateSPFoldersUsingNameandGuid

Default ValueTrue
TypeBoolean
Description True: creates SharePoint folders using the format of {Name}+{GUID}.- false: Creates SharePoint folders using just the name
Min Version 6.0.0.809
Max Version

When you integrate SharePoint, a folder in the site is created for each defined entity, normally with the name of the record and a GUID of the record. This can be ugly and not necessary if you have account names that are pretty unique. This setting allows you just to use the record name.

This screenshot shows with the setting as the default, true, at the top and the setting as false for JKL Sales

DefaultHeightForWizardReports

Default Value8.25
TypeDouble
Description With a default value 0: CRM will use 8.25 inches (A4), any other double value will override the default of 8.25.  Some printers may reject printed reports if the height is any less than the height of the paper loaded in the tray, this setting will override the height used
Min Version 5.0.9690.3541
Max Version

Printing can be problematic with different paper sizes etc. Not really a problem with modern printers, but this setting allows you to configure default printing sizes to ensure printing works for your organisation.

DisableIECompatMode

Default ValueFalse
TypeBoolean
Description Changes the server-side, automatic, IE Compatibility Mode Flag for Internet Explorer browsers. If you want pages to render in the most recent version of Internet Explorer set this to True. If you have form scripts or other customizations that require earlier versions of Internet Explorer this should be set to False. This is also controlled via Settings | Administration | System Settings | Customization
Min Version 5.0.9690.3233
Max Version

Compatibility mode was a big thing, particularly in the IE10 / 11 era. Making sure your website properly displayed across multiple browsers with inconsistent approaches to standards can still be a big gripe, but thankfully a thing of the past, with modern browsers adhering to standards a lot better.

DisableInactiveRecordFilterForMailMerge

Default ValueFalse
TypeBoolean
Description When you perform a mail merge, inactive records are not included. This option lets you override that functionality.
False – Inactive records will not be included in the mail merge.
True – Inactive records will be included in the mail merge.
Min Version 5.0.9688.583
Max Version

Mail Merge is a deprecated function, but if you still use it, when you call a mail merge from a campaign, inactive contacts or leads are not included.

Mail merge is similar to the quick campaign, and I checked that this flag does not override the selection for quick campaigns, but it seems to have no effect.

EnableBulkReparent

Default ValueTrue
TypeBoolean
Description Disables and reparents using a one record at a time approach
Min Version 6.0.0.809
Max Version

I am not sure this is relevant any more. I assume this is for where you have large datasets and on premise, that could (with cascading) lead to large data changes for each ownership change, but with my environment, I did not notice any change between the two options.

EnableQuickFindOptimization

Default Value1
TypeInt
Description
For more information, see the “Optimizing the Performance of Quick Find Queries” section in the Optimizing and Maintaining the Performance of a Dynamics CRM 2011 Server Infrastructure.
Min Version 5.0.9690.2720
Max Version

Another one I assume has gone the way of the dodo for D365, this was initially configured to roll back the changes made to Quick find back in CRM 2011. I have toggle this on a new system and can not find any effect. This may be because of my minor data load etc and the optimisations that Microsoft has done since 2011.

EnableRetrieveMultipleOptimization

Default Value0
TypeInt
Description For more information, see the “Optimizing the Performance of Queries against Large Datasets section” in the Optimizing and Maintaining the Performance of a Dynamics CRM 2011 Server Infrastructure.
Min Version 5.0.9690.1533
Max Version

This is another one that is probably redundant for anyone not on CRM 2011, and I would think those that are administering these systems already know about these settings. There is a full table of the configuration for this setting in the linked document, tweaking the way (away from the default) for returning multiple records in a list.

As I do not have a CRM2011 environment and also don’t have the data volumes to see the effect, not sure I can or should add to this.

ExportedExcelRetentionWindow

Default Value5
TypeNumber
Description The number of days to temporarily store Excel exported Office Document Records. 30 days max was selected arbitrarily as this is only a cache. Must be at least 2.
Min Version7.1.0.1065
Max Version

Learning is great isn’t it? Researching this one led me to a great article from Bhavesh Shastri about the settings that may affect storage size, which has this setting in it.

Basically, when you export a data set into Excel, D365 stores the result in a temporary table so that you can get back to the result quickly. There is a deletion service that goes and tidies up these temporary tables and this setting defines how old these records are before it removes them. If you have a very active system, these records could adversely effect the size of your instance.

ExpireChangeTrackingInDays

Default Value30
TypeNumber
Description Maximum number of days to keep change tracking deleted record ID’s. You want this value larger than the max# of days any change tracking dependent services sync with your system. Default is 30 days.
Min Version7.1.0.0
Max Version

This is another storage related one like the previous, again jump over to Bhavesh’s blog to get more detail. This setting doesn’t appear in the Microsoft KB article where the others are, even more confusing and makes me wonder what else Microsoft are hiding

If you have change tracking services running and worry about deleted records, this setting can be configured to increase the time these records are stored. Obviously, this will impact on storage if nothing else.

ForceRetrievePublishedMetadataForRetrieveAllEntities

Default ValueFalse
TypeBoolean
Description All RetrieveAllEntities requests will ignore the AsIfPublished flag so that it always retrieves the published metadata from cache.
Min Version 8.1.1.1020
Max Version

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

FullTextSpecialCharactersToRemoveFromSearchToken

Default Valuenull
Typestring
DescriptionThis allows an organization to remove certain characters from a fulltext search string.
Example: To remove a wildcard character from a FullText search, add “*”. To remove multiple characters, add them all together in a single string value “*.’#”. The characters are separated by ToCharArray
Min Version 8.1.1.1020
Max Version

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

GrantFullAccessForMergeToMasterOwner

Default ValueTrue
TypeBoolean
Description When two records owned by the same team are merged, the final record is shared with the owner of the record it was merged from. This creates redundant POA records, as a result, if the owner of the record is changed in the future it will be visible to team members of the previously owning team. To do this, set to false.
Min Version 5.0.9690.4449
Max Version

Another one of those security options that most people don’t know about. I would hazard to guess that most people don’t know that the owner of a subordinate record in a merge has the new master shared with them. Mark Carrington has a great explanation of this setting and the next in his blog here

The default setting puts a row in the Share table for the original owner, even if it is same as new owner, which is useful in a lot of cases, but also could break your security model if the owner changes again.

With the setting put to false, the original owner does not have the record shared with them

The wording of this setting implies that only the master owner will have the sharing stopped, but it seems that the original does as well.

GrantSharedAccessForMergeToSubordinateOwner

Default ValueTrue
TypeBoolean
Description To turn this setting off, this must be set to false. Records are shared with inherited access to subordinate owners during merge. This will not occur when set to false.
Min Version 5.0.9690.3911
Max Version

If you have a contact and merge the account, the contact will be moved to be owned by the master owner, but the owner of the contact will have the master record shared with them too. Obviously, this just makes the system work, but doesn’t help if you have a specific security prinicple in place.

Please see Mark’s blog to fully understand these values.

HideStageAndUpgrade

Default Value1
TypeInt
Description Changing this setting to 0 will allow users to see the upgrade solution option in solution import wizard when importing solutions with higher version than previously imported. This setting has a default of 1 which hides the option to perform a stage for upgrade.
Min Version 9.1.0.3
Max Version

Back in 2016, Microsoft gave us the ability to stage an upgrade solution, which means we can more easily remove parts of a managed solution, rather that using holding solutions.

Nishant Rana has an excellent blog here that describes the process. The process relies on having the Stage for upgrade tick box available to you, which is now hidden by default presumably because Microsoft has provided us the ability to create patches for solutions and it is no longer needed.

HierarchyLevelForHierarchyFeature

Default Value3
TypeNumber
Description The hierarchy level used for hierarchal security
Min Version 7.0.0000.3027
Max Version

Another security tweak. There are 2 security models that may be in use in your instance, namely managerial or positional security.

Both can take into account a number of managers above you who have the same access to records that you do, which is traditionally 3, and anything above this can cause performance issues. As you can set the hierarchy level on the hierarchy configuration, this setting is now redundant I think, as any change you make to the org setting is not reflected in the setting on the Hierarchy setting screen.

IfdAuthenticationMethod

Default Valuenull
TypeString
Description Changes the request sent to the ADFS server, this settings default value
Min Version 5.0.9690.2835
Max Version

This setting is for on premise only, as it defines which SSO an internet facing deployment (an external facing on premise deployment) uses to establish the user has the right access credentials.

This blog has a more detailed explanation.

IncludeHTC

Default Valuetrue
TypeBoolean
Description Set whether forms should support HTML component.  The CRM 4.0 API uses this feature which is deprecated and will no longer be included after the next major release.  If you  have javascript code relying on CRM 4.0 javascript API’s you should enable this and work to update your code to support CRM 2011. This is also controlled via Settings | Administraton | System Settings | Customization. This setting is NOT SUPPORTED IN CRM 2013
Min Version 5.0.9690.3233
Max Version

This setting is only applicable to CRM 4, I know there are still users out there, but I can not get access to a system to try out this setting & assume even the CRM 4 people won’t be using this feature still

inheritedRolePrivilegesFromTeamRoles

Default Valuetrue
TypeBoolean
Description Disables the Azure AD Group team functionality of the organization in an event that there is a performance related issue. The Azure AD Group team feature is shipped enabled by default.
False – Disable Azure AD Group Team and members of group teams are required to have their own security role assigned to them directly.  Run-time calls to Azure AD to obtain the user’s AAD groups are stopped.
True – Azure AD GroupTeam is enabled and members of group teams shall inherit user/basic privileges directly and user privileges are derived at run-time.  Run-time calls to Azure AD to obtain user’s AAD groups are invoked.
Min Version 9.1.0.4632
Max Version

Earlier this year, Microsoft gave us the ability to give security permissions to all the members of an Azure AD group, rather than having to duplicate security across Azure and Dynamics. This can be a time consuming god-send for your administrative staff, but also can impact performance. Setting this value to false forces the old method of security, with each user having to be configured with a role in D365.

Debajit Dutta has an excellent walkthrough on how to utilise this functionality here.

IdsCountBeforeUsingJoinsForSecurity

Default Value1000
Typeint
DescriptionNot documented in optimization paper.
Min Version 5.0.9690.2720
Max Version

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

IdsCountForUsingGuidStringsForSecurity

Default Value20
Typeint
DescriptionNot documented in optimization paper.
Min Version 5.0.9690.2720
Max Version

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

IntegratedAuthenticationMethod

Default Valuenull
Typestring
Description Changes the request sent to the ADFS server, this settings default value
Min Version 5.0.9690.2835
Max Version

An On-premise property, which I can not find anything on.

JumpBarAlphabetOverride / JumpBarNumberIndicatorOverride

Default Valuenull
Typestring
Description How to customize the Alphabet Bar for the CRM Application Grids for Microsoft Dynamics CRM 4.0
Min Version 5.0.9690.2243
Max Version

I didnt know this was a thing, but only for CRM 4.0. Basically, you could override what appears at the bottom of a search display.

Shivam Dixit has a walkthrough here

ListComponentInstalled

Default ValueFalse
TypeBoolean
Description If CRM and SharePoint use ADFS and users click to create a folder for a record in CRM 2011, intermittently, the SharePoint page is shown instead of the list part grid page causing confusion with users. This setting allows you to force CRM to use the installed list grid component in SharePoint when using ADFS. false: use the standard method of detecting Sharepoint Authentication  -true: If CRM and SharePoint have ADFS enabled, force CRM to use the grid display.
Min Version 5.0.9690.3911
6.1.0.581
Max Version

This was a bug fix to force display of the SharePoint list instead of the page in a SharePoint created folder when a list is available.

LookupNameMatchesDuringImport

Default ValueFalse
TypeBoolean
Description Importing a solution that was created from an upgraded 4.0 deployment fails. Changing this setting makes the import solution look up the names for forms, views, workflows and security roles.
Min Version 5.0.9690.583
Max Version

I have no access to CRM 4 to create a solution to test this out, but if anyone can create me screenshots, I’ll add in.

MaximumChildUsersCountLimitBeforeUsingJoinForHSM

Default Value80
TypeNumber
Description Maximum Child/Subordinate Users Count Before Using a Join Query for Heirarchical Security Model
Min Version 7.0.0000.3027
Max Version

As mentioned, hierarchical security model gives your manager (or managers manager etc) the same access to your data that you have. As a manager with lots or reports, this can cause performance problems, so limiting the maximum unions it makes when deciding on your access makes sense. After this number is reached, an outer join will be used to improve performance.

If you have scenarios that require that number of child users to a manager, I would recommend not using Hierarchical security.

MinRowCountForFKIndexCreateInReferencingEntity

Default Value100
TypeNumber
Description Setting min row count in referencing table for ForeignKey index creation
Min Version 7.0.0000.3027
Max Version

In the D365 world, the back end SQL optimisation is out of an administrators hands mostly, with indexes automatically been created for Primary keys or alternative keys for example. This setting tweaks the creation of indexes for FK keys.

If an account has a foreign key to a location entity, there needs to be more than 100 rows (by default) before the system will create an index on the account table using the location foreign key.

OfficeDocumentPersistenceTimeInDays

Default Value7
TypeNumber
Description The number of days to temporarily store Office Document Records. 30 days max was selected arbitrarily as this is only a cache.
Min Version 7.1.0.1059
Max Version

When an office document is retrieved from the database, it is stored in the cache, by default for 7 days. This can be altered. This is one option that impacts the size of your tenant.

PageSizeForHierarchyFeature

Default Value5
TypeNumber
Description The hierarchy page size used for hierarchal security
Min Version 7.0.0000.3027
Max Version

I assume that this is used in the same way as the MaximumChildUsersCountLimitBeforeUsingJoinForHSM setting, but I can not find any documentation for it

ReassignAllExtendedTimeout

Default Value0
TypeNumber
DescriptionIncrease script timeout for reassigning all records of a user or team – this allows you to exceed the default extended timeout value. Default extended timeout is 1000000 ms (roughly 15 minutes). WARNING: Care should be taken when increasing this value above the default – always double check the number of minutes before setting this to a value higher than the default
Min Version 7.1.2.1020
Max Version

If you have a security model that relies on cascade of ownership, when a parent owner is changed, this ownership is also done for childred, and children of children etc. This can be a time consuming process which you can increase the time-out for, possibly temporarirly if you have an occasion that required it, though the default 15 minutes is a very long time.

RecordCountLimitToSwitchToCteSecuritySql

Default Value75000
TypeInt
Description For more information see the Optimizing the Performance of Queries against Large Datasets” section in the Optimizing and Maintaining the Performance of a Dynamics CRM 2011 Server Infrastructure.
Min Version 5.0.9690.2720
Max VersionI didnt know this was a thing, but only for CRM 4.0. Basically, you could override what appears at the bottom of a search display.

This setting is for On-premise only, impacting the switching to use a temporary table or CTE ( Common Table Expression ) to generate the results. I have not got enough data to check if this still has an impact on D365 environments.

The linked paper has a lot of good stuff about optimisations, that thankfully the more modern SAAS environments have taken care of.

RetrieveMultipleSharingCountThreshold

Default Value1000
TypeInt
Description For more information, see the “Optimizing the Performance of Queries against Large Datasets section” in the Optimizing and Maintaining the Performance of a Dynamics CRM 2011 Server Infrastructure.
Min Version 5.0.9690.2720
Max Version

This is another setting that is for optimisation of the on-premise architecture, defining the number of shared records the user has for the entity being searched for (either direct or via teams) that the system will convert the query to joins rather than table value functions.

As sharing with individuals should be an increment to your security model rather than the main part, having 1000 shares per entity would be pretty rare.

SecurityQueryHint

Default Value1
TypeNumber
Description Used to hint the query within GetRightsFromPrincipalObjectAccess. 0=None; 1=Recompile (default); 2=OptimizeForUnkown
Min Version 8.1.0.141
Max Version

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

SharingLimitForPOASnapshotTable

Default Value10
TypeInt
Description Not documented in optimization paper.
Min Version 5.0.9690.2720
Max Version

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

skipAadGroupObjectIdValidation

Default ValueFalse
TypeBoolean
Description Disables the validation of Azure AD Group objectID and allows application to create Group team in CDS.  This is used to mitigate the latency in the Azure AD distributed cache where a newly created Azure AD group cannot be validated if the subsequent Azure AD Group graph call goes to a distributed cache server that does not have the new Azure AD group yet.
False – do not skip Azure AD group objectID validation during Group Team creation.  This is shipped by default.
True – skip Azure AD group objectID validation to allow application to create Group team.
Min Version 9.1.0.5808
Max Version

If you use the new functionality to connect teams to AD groups, allowing a single location to manage security, setting up the teams needs a link back to the AD group.

As AD group creation takes time to propagate to the various caches, the group you want to link to might not be available, so, by default, no check is made to see if you have got the GUID right. This can be forced if you need that extra piece of mind by setting this value true.

SkipGettingRecordCountForPaging

Default ValueFalse
TypeBoolean
Description Disables the record count query. This query is responsible for retreiving the total number of records returned for each view. This query can cause longer search times and may cause SQL timeouts or exceptions.
False – Enables record depend on views.
True – Disables record depend on views.
Min Version 8.2.0.0503
Max Version

When you have a large dataset, knowing that you have thousands of records rather than just the 100 the view is showing is invaluable, but this query has to be done, as well as the query to retrieve the data, impacting performance

With the setting applied, the query doesn’t display an accurate number, but it does display a number, which is mis-leading in my opinion.

SkipGettingRecordCountForPagingForAudit

Default ValueFalse
TypeBoolean
Description Disabled the record count query for just the Audit entity. False enables the record count, and True disables the record count
Min Version 8.2.0.0503
Max Version

This is the same as the previous setting, but just for the auditing views, which are notoriously large.

SkipSuffixOnKBArticles

Default ValueFalse
TypeBoolean
Description Disables the suffix from being used on the automatically generated KB article numbers.
False – Enables the suffix on KB articles.
True – Disables the suffix on KB articles.
Min Version 5.0.9690.1992
Max Version

Pretty self-explanatory, but for old KB articles rather than the new Knowledge Articles.

TabletClientMaxFields

Default Value75
TypeNumber
Description Maximum Tablet Fields max-500/ min- 1
Min Version 6.0.0.809
Max Version

These tablet settings are not for D365, v9 as Unified interface has removed the limitations

TabletClientMaxLists

Default Value10
TypeNumber
Description Maximum Tablet Lists max-50/min-1
Min Version 6.0.0.809
Max Version

These tablet settings are not for D365, v9 as Unified interface has removed the limitations

TabletClientMaxMashups

Default Value3
TypeNumber
Description Maximum Tablet Mashups
Min Version 7.0.0000.3027
Max Version

These tablet settings are not for D365, v9 as Unified interface has removed the limitations

TabletClientMaxTabs

Default Value5
TypeNumber
Description Maximum Tablet Tabs max-50/min-1
Min Version 6.0.0.809
Max Version

These tablet settings are not for D365, v9 as Unified interface has removed the limitations

traceLogPersistenceTimeInDays

Default Value30
TypeInt
Description This sets the amount of time that TraceLog data is maintained before being removed by the Deletion Service
Min Version 8.1.1.1020
Max Version

This is another setting that can impact the size of your instance. The logs are stored by default for 30 days, if you have a heavily used system, this will be a lot of data, so reducing this will reduce costs. Trace logs are part of a separate pricing tier now, but still worth a look.

UseOrganizationServiceForMultiEntityQuickFind

Default ValueFalse
TypeBoolean
Description Allows Multi-entity Quick Find to run serially rather than in parallel. This allows plugins to be executed on RetrieveMultiple.
Min Version 8.2.1.0135
Max Version

Retrieve multiple plugins can do a little more security to prevent the display of records or adding in data to a record set if you need it to be really truly accurate.

Whilst this is frowned upon as is a real impact on system performance, it might be necessary. If you need this functionality, quick view doesn’t honour this logic as the queries run in parallel. Toggling this to true makes each quick query run in serial, allowing retrieve multiple plugins to work.

Author:

CRM Developer & Consultant for nearly 20 years, now working on Dynamics 365 projects for the last 5 years. Love of tech & solutionising

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s