Archive for the ‘2013’ Category

MS CRM 2013 Performance: Form\View Load Analyzer

August 20th, 2014 DynamicsMSCRM Comments off

With the release of Service Pack 1 for Dynamics CRM 2013 Microsoft has introduced an analyzer to track performance on CRM form Loads. To take advantage of this feature open a form on CRM and then using your keyboard select Ctrl + Shift + Q to view the performance analyzer. To activate this utility choose Enable on the utility and then using F5 refresh your CRM form, the utility will close, normal behavior.

Once the form has refreshed select Ctrl + Shift + Q again, this time the utility will display showing the performance of the form load.

Some items of note when using this utility.
- Probably a good idea to Disable the Utility when not in use, only Enable when needed
- It appears to only work with IE
- It will work with CRM Online and appears to work on CRM On Premise as well but some have had issues, maybe browser choice.
- This is not restricted to Forms, it will work on Views as well.

In addition to the graphical view of the load performance you can Copy the stats for a more detailed exam. Included is a sample showing some of the parameter, this captures more rows of data but I have limited the output due to blog realestate.

  • Share/Bookmark
Categories: 2013, Forms, Performance, Views Tags:

MSCRM 2013 Data Encryption

August 18th, 2014 DynamicsMSCRM Comments off

Data Security is the prime aspect across the world. As we are storing all our data into the CRM, we need to keep our sensitive data in Encrypted format for the security reasons. Microsoft Dynamics CRM 2013 uses standard Microsoft SQL Server cell level encryption for a set of default entity attributes that contain sensitive information, such as user names and email passwords.


- Uses FIPS 140-2 Encryption Standard

- prevents a database administrator from accessing encrypted data

- SQL Server cell level encryption


- Used to store Email and Password when working with CRM and Microsoft Exchange

- Yammer Integration


- data encryption is not active in Microsoft Dynamics CRM 2013 on-premises by default but users who have the system administrator security role can activate data encryption

- After data encryption is activated, it cannot be turn off but you can change the encryption key if required.

- Data Encryption cannot be applied on the custom fields. Currently it is only available on the out of the box password fields.

- Auditing cannot be enabled on encrypted fields

- Encrypted fields cannot be customized

- Encrypted fields cannot be indexed

- When doing a retrieve of an encrypted field’s value, a null is returned

- SSL is required to use messages

To activate data encryption or change the encryption key you need to navigate to the Settings -> Data Management -> Data Encryption area. Please note that user having System Administrator role can only activate Data Encryption or change the Data Encryption Key.

1) IsDataEncryptionActiveRequest: This request checks whether Data Encryption in Activated or not.

IsDataEncryptionActiveRequest request = new IsDataEncryptionActiveRequest();

IsDataEncryptionActiveResponse response = (IsDataEncryptionActiveResponse)service.Execute(request);

bool isDataEncryptionActive = response.IsActive;

2) SetDataEncryptionKeyRequest: This request helps to change the Data Encryption key. You just need to set the new encryption key in the Encryption Key property which will set the new encryption key.

SetDataEncryptionKeyRequest request = new SetDataEncryptionKeyRequest();

request.ChangeEncryptionKey = true;

request.EncryptionKey = “YOUR_ENCRYPTION_KEY”;

SetDataEncryptionKeyResponse response = (SetDataEncryptionKeyResponse)service.Execute(request);

3) RetrieveDataEncryptionKeyRequest: This function helps retrieve encrypted key available in the organization.

RetrieveDataEncryptionKeyRequest request = new RetrieveDataEncryptionKeyRequest();

RetrieveDataEncryptionKeyResponse response = (RetrieveDataEncryptionKeyResponse)service.Execute(request);

string encryptedKey = response.EncryptionKey;

Please note that, you must use SSL when you use these messages. When you execute these messages, a check will ensure that the user’s client/server connectivity is using the HTTPS protocol. If not, an exception is returned if the requests are submitted without using HTTPS.

Sourced From: Inogic

  • Share/Bookmark
Categories: 2013, Encryption Tags:

MS CRM 2013 Disable Welcome Screen

February 18th, 2014 DynamicsMSCRM Comments off

Checking “dont show this to me again” does not disable the welcome screen.

To remove permanently an registry update is necessary.

1. Start Registry Editor.

2. Locate registry subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM.

3. Right-click MSCRM, point to New, click DWORD (32-bit) Value, enter DisableNavTour, and then press ENTER.

4. Right-click DisableNavTour, click Modify.

5. In the Value data box, type 1, and then press ENTER.

6. Close the Registry Editor.

  • Share/Bookmark
Categories: 2013 Tags:

MS CRM 2013 Outlook CRM Failed to Load

January 31st, 2014 DynamicsMSCRM Comments off

Using office 365 after CRM for Outlook is setup a message may appear when accessing CRM for the first time “CRM Failed to Load”.

Before trying other solutions available first check that CRM is enabled within the Outlook Add-Ins.

1. Within Outlook go to File > Options > Add-Ins
2. View Inactive Application Add-Ins
3. If CRM is listed you will need to enable this Add-In.
4. Under Manage choose COM Add-ins and Go
5. Check Microsoft Dynamics CRM and hit OK
6. CRM should now work in Outlook, you may need to close and reopen it.

  • Share/Bookmark
Categories: 2013, Outlook Tags:

MS CRM 2013 Server Side Sync Configuration

December 17th, 2013 DynamicsMSCRM Comments off

Sourced From: Quantum Dynamics with Microsoft CRM

MS CRM 2013 Server Side Sync Configuration

With Dynamics CRM 2013 the Asynchronous service now provides server-side Exchange Synchronization allowing users to:
• Synchronize contacts, tasks and appointments
• Process outgoing emails
• Process incoming emails
• Automatically tracking emails based on Correlation rules (smart matching or/and tracking token) All this without the need for the CRM Outlook client.

In the past appointments could only be synchronized with the CRM Outlook client installed and configured, if you booked an appointment with multiple people the appointment would only appear in other users Outlook Calendar if those same users had the CRM client installed and synchronizing with CRM. With Exchange Synchronization you eliminate this need for the CRM client, appointments created by you that require multiple people get directly written to their exchange profile so you automatically get an appointment alert to accept or decline.

On this article I will walk-through how to set up Exchange synchronization with Dynamics CRM 2013, here is an overview of the steps:
1. Set up an IIS self-signed certificate
2. Configure Exchange Impersonation
3. Create and configure a CRM 2013 Exchange profile
4. Configure User Mailboxes
5. Configure CRM global Email Settings
6. Test synchronization
7. Design Overview
8. known issues
9. Summary and References

Before we start configuring CRM 2013 with exchange we need to have in-place HTTPS. We just need a self-signed certificate generated by IIS to get us going.

1. Self-signed Certificate
To generate the certificate open IIS and highlight the server name and double click Certificates

On the right-hand side click on Self-signed certificate

Give it a Name (I call it MyCertificate) leave Personal and click OK


You should see the certificate listed on the list:


Next step is to bind the Dynamics CRM website to HTTPS (443)

Highlight the Dynamics CRM web site under sites and on the right-hand side chose Bindings. The below window opens and on the type field you choose HTTPS this will enable the SSL certificate field to choose a certificate and we choose the MyCertificate, click OK

2. Exchange Account Impersonation
Before we start Configuring profiles in CRM we want to make sure CRM service account has impersonation rights on the Exchange side to do this we run the following PowerShell command:

Exchange 2010
New-ManagementRoleAssignment -Name “” -Role:ApplicationImpersonation -User “”

For example: New-ManagementRoleAssignment -Name “CRM ExServiceAcc” -Role:ApplicationImpersonation -User crm13.service

Exchange 2007
Get-MailboxServer “” | Add-AdPermission -User “” -AccessRights ExtendedRight -ExtendedRights ms-Exch-EPI-May-Impersonate, ms-Exch-EPI-Impersonation

The second PowerShell command requires the Distinguished Name (DN) of the Microsoft Client Access Server (CAS).

To enable impersonation rights on a single Microsoft CAS server use the following command:

Get-ClientAccessServer -Identity “” | Add-AdPermission -User “” -ExtendedRights ms-Exch-EPI-Impersonation

3. Configuring CRM Exchange Profile
With the https binding in-place navigate to CRM using https://server/organization and settings > Email Configuration

Click on Email Server Profiles and then New Exchange Profile:

Fill in the details as per the below screenshot, you could use auto-discovery if it’s working okay for you, I have tested in my environment and worked perfectly. The service account we specified has been given server-wide impersonation.
I’ve named the profile UK Mailboxes if you have users across different countries and exchange servers located on these sites you should create multiple profiles with the corresponding Exchange servers.


Leave the Advanced settings as they are:


Navigate to Mailboxes and on the Ribbon choose Add Existing Mailbox, by default every user created or imported during an organization import it’s automatically generated a mailbox in the system, so when you click add existing mailbox the system will list all available user accounts.

4. Configuring Mailboxes
At this stage we have created an Email Server Profile and added 2 mailboxes, lets double click on one of the mailboxes:

Change the:
Server Profile: UK Mailboxes (the profile we just created)

Incoming Email: Server-Side Synchronization or Email Router
Outgoing Email: Server-Side Synchronization or Email Router

Note: on the configuration test results you should see Not Run instead of Success the screenshot was taken after the configuration was completed

Approve the Email and then click on Test & Enable Mailbox:

You then get the following alert message on the mailbox profile:

Click on Alerts and in a few seconds you will see the following messages coming up:

5. CRM Global Email settings
Before we start the Outlook test, lets first look at the CRM Global Email settings navigate to: Settings > Administration > System Settings

Go to the Email Tab, on this section there are a number of important settings that you should think from a design phase rather than implementation.

Configure email processing:
here you define which default method you want to process users email as it says if you choose Server-Side it will block Email Router. As we want to test server-side synchronization choose server-side instead of Email router.

Configure default synchronization method:
This will define users profile preferences and this is very important from a design perspective because will avoid duplicating work. If all your users are in UK you can default a server profile to UK Mailboxes, if you have users across different countries you could still define a default Email Server Profile using auto-discovery and then workout manually any specific users that require a manual Server Profile.

On the incoming, outgoing email and appointments, contacts and tasks default this to Server-Side synchronization or Email Router this will make sure it can use both.

Below you define if you should only process emails for approved users, this means if email processing is not a sensible subject in your implementation then I would recommend you untick this boxes because it removes an extra click on the configuration steps as we have seen above.

Configure email correlation, by default both tracking token and smart matching are enabled this is a business requirements rather than a performance or optimization issue. The tracking token will add a token CRM:Number to the emails subject which get processed by CRM and smart matching will be more transparent to users and attempt to use a matching pattern to find emails that should be tracked in CRM.

Note: Using a tracking token will be more efficient than smart matching but at a cost of being less transparent to users

6. Test Synchronization
You ready to test the exchange synchronization create one appointment in CRM and include as required yourself and another CRM user fill in the other details and SAVE in a few minutes if all works well a meeting request is received in Outlook by all users

To test sending emails confirm that on the Configure Email processing in the Global email settings is set to server-side synch, send an email to someone from CRM and ask that person to reply back, you should see the email tracked automatically in CRM.

7. Design Overview
On the design overview I just want to share a high-level diagram on the possible design routes for server-side synchronization.

above diagram illustrates a possible scenario where there is a main office Lisbon and all other 3 branch offices have CRM users but out of the 3 only 2 offices use their own Exchange server. In CRM you define 3 Email Exchange Server Profiles:

– Default Exchange Profile configured with Lisbon Exchange server
– New-York CRM Profile configured with New-York Exchange Server
– London CRM Profile configured with a London Exchange server

The Default Exchange server profile it’s applied to all users mailboxes so you only have to apply manually Exchange profiles on users mailboxes in London and New-York. Toquio and Lisbon will both default to the default Exchange profile which points at Lisbon.

8. Known issues
While testing the server-side synchronization I found that some mailboxes didn’t get processed though the Test configuration results passed successfully. Enabling logging on the Asynchronous servers I found the below error; this has been logged with Microsoft and currently being investigated so if you do find yourself unable to test the server-side synchronization bear in mind this could apply to your mailbox create a new user with a brand new mailbox to test your CRM configuration.

When this happens you may see the following error message:

On the Asynchronous service logs we found:

>Exception occurred while retrieving folder data from exchange server. Exception: Unhandled Exception: System.ArgumentNullException: Value cannot be null.
Parameter name: s

Server stack trace:
at System.Convert.FromBase64String(String s)
at Microsoft.Exchange.WebServices.Data.MapiTypeConverter.<.cctor>b__14(String s)
at Microsoft.Exchange.WebServices.Data.MapiTypeConverterMapEntry.ConvertToValue(String stringValue)
at Microsoft.Exchange.WebServices.Data.ExtendedProperty.TryReadElementFromXml(EwsServiceXmlReader reader)
at Microsoft.Exchange.WebServices.Data.ComplexProperty.InternalLoadFromXml(EwsServiceXmlReader reader, XmlNamespace xmlNamespace, String xmlElementName, Func`2 readAction)
at Microsoft.Exchange.WebServices.Data.ComplexProperty.LoadFromXml(EwsServiceXmlReader reader, XmlNamespace xmlNamespace, String xmlElementName)
at Microsoft.Exchange.WebServices.Data.ExtendedPropertyCollection.LoadFromXml(EwsServiceXmlReader reader, String localElementName)
at Microsoft.Exchange.WebServices.Data.ComplexPropertyDefinitionBase.InternalLoadFromXml(EwsServiceXmlReader reader, PropertyBag propertyBag)
at Microsoft.Exchange.WebServices.Data.ComplexPropertyDefinitionBase.LoadPropertyValueFromXml(EwsServiceXmlReader reader, PropertyBag propertyBag)
at Microsoft.Exchange.WebServices.Data.PropertyBag.LoadFromXml(EwsServiceXmlReader reader, Boolean clear, PropertySet requestedPropertySet, Boolean onlySummaryPropertiesRequested)
at Microsoft.Exchange.WebServices.Data.EwsServiceXmlReader.ReadServiceObjectsCollectionFromXml[TServiceObject](XmlNamespace collectionXmlNamespace, String collectionXmlElementName, GetObjectInstanceDelegate`1 getObjectInstanceDelegate, Boolean clearPropertyBag, PropertySet requestedPropertySet, Boolean summaryPropertiesOnly)
at Microsoft.Exchange.WebServices.Data.GetItemResponse.ReadElementsFromXml(EwsServiceXmlReader reader)
at Microsoft.Exchange.WebServices.Data.ServiceResponse.LoadFromXml(EwsServiceXmlReader reader, String xmlElementName)
at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.ParseResponse(EwsServiceXmlReader reader)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ReadResponse(EwsServiceXmlReader ewsXmlReader)
at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.ReadResponse(IEwsHttpWebResponse response)
at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalLoadPropertiesForItems(IEnumerable`1 items, PropertySet propertySet, ServiceErrorHandling errorHandling)
at Microsoft.Crm.Asynchronous.EmailConnector.MonitoredExchangeService.LoadPropertiesForItems(IEnumerable`1 items, PropertySet propertySet)
at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)

Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.EndInvokeHelper(Message reqMsg, Boolean bProxyCase)
at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(Object NotUsed, MessageData& msgData)
at Microsoft.Crm.Asynchronous.EmailConnector.ExchangeSyncSteps.LoadPropertiesForItemsStep.LoadPropertiesForItemsDelegate.EndInvoke(IAsyncResult result)
at Microsoft.Crm.Asynchronous.EmailConnector.ExchangeSyncSteps.LoadPropertiesForItemsStep.EndRequest(IAsyncResult response)

at Microsoft.Crm.Asynchronous.EmailConnector.ExchangeSyncSteps.ExchangeSyncAsyncRemoteStep`2.AfterCall()

9. Summary & References

Set up email through server side synchronization
Configuring Exchange Impersonation

  • Share/Bookmark
Categories: 2013 Tags:

Microsoft Dynamics CRM 2013 Downloads

October 9th, 2013 DynamicsMSCRM Comments off
Categories: 2013 Tags:

MS CRM 2013 User Experience Overview

October 3rd, 2013 DynamicsMSCRM Comments off
Categories: 2013 Tags:

Getting started with Microsoft Dynamics CRM 2013

October 3rd, 2013 DynamicsMSCRM Comments off
Categories: 2013 Tags:

MS CRM 2011 Enable WCF Compression to Improve Network Performance

March 29th, 2013 DynamicsMSCRM Comments off

If you have ever analyzed network traffic you would notice that IIS will automatically compress many types of content including images, jscript, and css pages. Compression is used improve the network performance by decreasing the number of round trips required to transfer data from the server to the client machine.

The CRM 2011 Outlook client uses WCF to retrieve data from the server. By default IIS will not compress WCF responses which have a mimeType of  ‘application/soap+xml;charset=utf-8′.  Since the WCF traffic is not compressed you may notice there is increased network traffic or performance is degraded when comparing CRM 2011 to CRM 4.0.  Typically I have seen a 30-40% reduction in response size once compression is enabled for the WCF responses. However once SSL is enabled on the CRM website the compression can reduce the size by 80-90%.

Below is a chart showing response size before and after compression is enabled within IIS. This is captured from a non-customized CRM 2011 environment with the sample data loaded. This shows improvements when loading the various views in the Outlook client.

No Compression Compression Compression + SSL
Activities View
Bytes Sent: 82,234
Bytes Received: 971,139
Bytes Sent: 82,234
Bytes Received: 722,786
Bytes Sent: 53,249
Bytes Received: 36,658
Accounts View
Bytes Sent: 105,084
Bytes Received: 219,102
Bytes Sent: 105,084
Bytes Received: 149,424
Bytes Sent: 67,586
Bytes Received: 25,837
Contacts View
Bytes Sent: 78,286
Bytes Received: 177,504
Bytes Sent: 78,286
Bytes Received: 122,090
Bytes Sent: 50,283
Bytes Received: 19,791
Leads View
Bytes Sent: 78,286
Bytes Received: 202,589
Bytes Sent: 78,286
Bytes Received: 141,021
Bytes Sent: 50,274
Bytes Received: 19,769

How to Enable WCF compression

You may enable compression either by using a command line or by manually modifying the ApplicationHost.config file on the CRM Server. Below are the steps for each process.

Note: You may notice an increase in CPU utilization with compression enabled so be sure to monitor CPU accordingly.

Enable compression using a command line.

a. Open the Command Prompt on the CRM Server.

b. Run the following command:

%SYSTEMROOT%\system32\inetsrv\appcmd.exe set config -section:system.webServer/httpCompression /+”dynamicTypes.[mimeType='application/soap%u002bxml; charset=utf-8',enabled='true']” /commit:apphost

c. Reset IIS for the setting to take effect.

Enable compression by manually updating the ApplicationHost.Config

a. On the CRM Server Navigate to:C:\Windows\System32\Inetsrv\Config\applicationHost.config and open it with notepad.

b. Search for the Section:“<dynamicTypes>” and in that section you should fine an entry that looks like this:
<add mimeType=”application/x-javascript” enabled=”true” />

c. Below that, add the following line:
<add mimeType=”application/soap+xml; charset=utf-8″ enabled=”true”/>

d. Save the file and reset IIS for the setting to take effect.

Note: For additional information about configuring HTTP compression, on TechNet, see the article Configuring HTTP Compression in IIS 7 at:

The Optimizing and Maintaining the Performance of a Microsoft Dynamics CRM 2011 Server Infrastructure whitepaper also includes a section on HTTP compression .

Sourced From:  Jeremy Morlock Microsoft Premier Field Engineer

  • Share/Bookmark
Categories: 2011, 2013, IIS, Performance Tags: