Quantcast
Channel: Dynamics 365 Customer Engagement in the Field
Viewing all 393 articles
Browse latest View live

PFE Core Library for Dynamics CRM Documentation and Code Samples

$
0
0

Documentation. Always promised, rarely delivered. Our recently announced PFE Core Library for Dynamics CRM has proven no different. A shiny new box that when opened was missing its instruction manual. Well, not being one that succumbs to stereotypes, I decided to put Visual Studio aside for a moment and whip together details on what's in the library and how to use it. So, if you haven't been back to our CodePlex site recently, go check out the Documentation area!

The current documentation focuses on two primary areas of the library, the XrmServiceManager classes and ParallelServiceProxy classes. These classes address the basic questions, "How do I connect to CRM?" and "How do I submit a bunch of requests to CRM in parallel?" respectively. Where relevant I've coupled the documentation with highly "sanitized" examples to demonstrate the specific implementation patterns.

For those of you who desire a little more "meat on the bone", I've also provided details on a functional sample application scenario, PfeXrmCoreWalkthroughApp, which takes things a step further in showing how the classes work together. Regarding parallelized CRM requests, this app also provides basic sequential and raw .NET Task Parallel Library (TPL) patterns that can be contrasted with the usage of our library.

Source code for both the documentation examples and the sample application have been uploaded to our source code repository.

As always, be sure to monitor our Release History and Known Issues pages for build-specific updates and details. Lastly, I encourage you to provide us feedback on where we've nailed it, what could be improved, and any areas that require further clarification. Comment below, start a discussion on CodePlex, or contact our team directly. Until then, having done my good documentation deed, I'm back to writing code!

 

M. Austin Jones

Follow the conversation:
@maustinjones
@pfedynamics | http://www.pfedynamics.com


PFE Dynamics Podcast Update

$
0
0

Recently we made a change in how we are managing and hosting our podcast series, starting with our CRM 2016 Update 1.0 podcast.  I wanted to provide an update since the change will affect anyone who is a current subscriber to our podcast or has their podcast software pointed to our existing feed.

Going forward we will be hosting the podcast on Channel9. More specifically, you can find our podcast page here: https://channel9.msdn.com/Blogs/PFE-Dynamics-Podcast

Previous podcasts will continue to be available on our CRM in the Field blog.  And blog articles will link to the Channel9 podcast pages.  And for the really old stuff, you can still find it on BlogTalkRadio.

RSS feeds:

Audio only:  https://s.ch9.ms/Blogs/PFE-Dynamics-Podcast/RSS/mp3

Video:  https://s.ch9.ms/Blogs/PFE-Dynamics-Podcast/RSS

 

Thanks for listening/reading and let us know if you have any feedback on the new format.

Ryan Anderson

 

Follow the conversation:

@lefsaeater
@pfedynamics | http://www.pfedynamics.com

Enable WCF Compression & SSL to Improve CRM 2013 Network Performance

$
0
0

A while back I published a blog article that showed the performance improvements that can be achieved in CRM 2011 by enabling WCF compression. This specifically applies to the traffic generated by the CRM Outlook client or other applications using the CRM web services. The improvements mentioned back then also hold true for CRM 2013.

In my previous article I explained that IIS compresses many content types, but by default it 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 the CRM Outlook clients are brought online.  These type of issues can be mitigated by enabling WCF compression and/or using SSL encryption for CRM. The biggest improvement is achieved by using both WCF Compression and SSL as I show in the following charts.

Below are network statistics from launching the CRM 2013 Outlook client and navigating some default views. I first captured a baseline and then repeated the steps using compression, SSL, and then a combination of SSL and compression.

If using just WCF compression there may be up to a 28% reduction in response size from the server. There should be very little change in the request size as compression only affects server to client traffic.

When only SSL is enabled both the request and response size over the network is reduced by up to 45%.  That brings up the question, “How can enabling SSL help reduce network traffic”? 

By just comparing the traffic side by side in Fiddler you can see that WCF will implement its own encryption if SSL is not present. This results in a large amount of encryption data to be passed with the WCF request and response.

When SSL is introduced WCF no longer implements its own encryption and that extra encryption baggage is no longer passed to/from the server.

Now when both Compression and SSL are enabled there is up to a 94% reduction in the response size.

image

We can see that the total reduction of network traffic is substantial, but if you are working on a local network the difference in response time is hardly noticeable. The biggest performance benefit is for the remote users that are on slower network connection where latency is present. To show this scenario I emulated network latency of 77ms and transfer rates of 192KB/sec. These are performance numbers I often see with real customers working outside the office.

For a user with this type of network speeds it can take close to 16 seconds to fully load the Outlook client and around 5.5 seconds to load a view. If we implement SSL and WCF compression these response times can drop by 44%.

image

This is great data, but the next question is how will this affect server performance now that it has to compress and encrypt the traffic?

In most cases the CRM Servers will have plenty of processing power so the overhead of compression and SSL is hardly noticeable. IIS has safeguards built-in that it will automatically stop compression if CPU ever spikes above 90% and will stay off until CPU drops below 50%. If server performance is a concern then load testing is the best way to fully understand the impact of these settings in your environment.

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: http://technet.microsoft.com/en-us/library/cc771003(WS.10).aspx

 

Thanks,

Jeremy Morlock
Microsoft Dynamics CRM
Premier Field Engineer

CodePlex : Dynamics CRM QuickFind on Selected View

$
0
0

Another CodePlex solution from PFE Dynamics team!

QuickFind on Selected View : https://quickfindonselectedview.codeplex.com/

 

Overview

"QuickFind doesn't respect current view? I hear you!"

Thank you for your recent feedback regarding QuickFind functionality in CRM. The QuickFind search functionality (in its current form) does not return records from within the selected view. Instead, it spans its search across all active records within the selected entity. I have therefore written the following project as my answer to this problem.

Project Description
Dynamics CRM solution : Do QuickFind search for selected view.

The purpose of this project is to distribute the QuickFind on Selected View solution and source code to the customer/partner community. I have developed this solution in response to the requests from customers and partners who wanted QuickFind to search under currently selected view. I have used Custom Entity and Plug-in to achieve some scenario but the requirement will vary from project to project, so I publishing this as an open source so that you can decide how to use it in your respective project.

Limitations

There are several known limitations.

- If you do QuickFind right after using Advanced Find, QuickFind may query by using Advanced Find query as that could be last used query. The Plug-in cannot distinguish between View query to Advanced Find query.
- Same limitation applies If you do QuickFind right after you see Related Entity Grid for a record in separate window, QuickFind may query by using Related Entity Grid view
- If you use Multi-Entity Search on Microsoft Dynamics CRM Table client, the search result may be affected by this solution, as it uses QuickFind feature to search the result.

Workaround

- If you think query results are not correct, refresh the view once more, which ensure the selected view definition is stored in last executed query. 

Solution Detail

This solution consists of 3 components.

Custom Entity : Query History
The custom entity stored "Last Executed Query" information. Please note it is not "Last Used View" information.
It has 2 custom fields.

- Entity Name : (1 line text, Length 100) - Stores which entity for the query
- FetchXML : (Multiline text, Length 10,000) - Stores last used FetchXml. (QueryExpression will be converted to FetchXML to store)

Plug-in
Plug-in monitor and investigate query passed to RetrieveMultiple, and decide what to do depending on the query. Please see source code for more detail.
If you want to register more steps, please use the Plugin Registration Tool and register a step as following.

- Register against RetrieveMultiple request (Please do not register against Execute)
- Specify the Entity that you want QuickFind query based on last executed query (Please do not leave primary Entity blank as that affect all entities)
- Specify Calling User to Run in User's Context
- Register to Pre-Operation stage with Synchronous

Security Role
Simple security role which has User level Create/Read/Write privilege to the custom entity.

Important Notes

Please do not use this in Production
Please consider this as just a sample to demonstrate how to achieve the scenario. As scenario and situation varies depending on each environment, please investigate the code and modify accordingly to meet your requirements.
In addition, please implement error handling which suits your system.

Signing Key
Provided sample Visual Studio solution includes self signed certificate with no password. When you do so, please do not forget to update the entity and the field names in the plug-in code.

Managed Solution
I strongly recommend you to create your own solution which includes necessary custom entity with custom field. When you do so, do not forget update entity and field names in plug-in code.

Please try this solution and let us know your feedback!

Ken

Premier Mission Critical/Premier Field Engineer 
Microsoft Japan

Administering Dynamics CRM

$
0
0

The following is the first in a series of cross-posts from Ritesh Ranjan’s blog.  Ritesh is one of our CRM Premier Field Engineers out of Norway.  Enjoy and stay tuned for more!

Hello everyone,

Today I am writing about a common scenario which I have noticed during my customer visits lately. This is primarily focused on administering Dynamics CRM. I have tried to include almost every aspect that I could recollect from my customer visits. So, whether you would like to prepare your plan for maintaining Dynamics CRM effectively or define a benchmark based on this, you could use the information listed below.

Happy reading!!

CRM Server Maintenance: 

SQL Server monitoring: 

IIS maintenance: 

 

Also, I would like to include an article written by Shawn on CRM Upgrade Best Practices which should always be considered when planning for an upgrade: http://blogs.msdn.com/b/crminthefield/archive/2012/10/10/crm-upgrade-best-practices.aspx

Ritesh

My Blog: http://blogs.msdn.com/b/ritesh_ranjan/

LinkedIn: http://lnkd.in/dkV2Brj

Twitter: https://twitter.com/riranj

Microsoft Premier Field Engineer

Dynamics CRM – Troubleshooting Workflows

$
0
0

Another cross-post from the blog of Ritesh Ranjan.  Enjoy!

----------------------------------

Business processes are an integral part of any enterprise software application. A business process can be of two types: automated processes that rely solely on communication among applications based on a set of rules, and interactive processes that also rely on people to initiate and run the process, and to make the appropriate decisions during the running of the process.

In Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online, a process enables you to create and manage your automated and interactive business processes. While the name has been changed to process, the entity that is used to implement a process is still called workflow. A Microsoft Dynamics CRM process provides many out-of-the-box components that business users and administrators can use to model their business processes. Microsoft Dynamics CRM also offers developers a mechanism to extend and customize the standard behavior of processes to achieve the functionality that their business applications require by allowing them to develop custom components.

Processes are built on top of Windows Workflow Foundation 4. For more information, see Windows Workflow Foundation.

In Microsoft Dynamics CRM 2011, workflows are now called processes. In addition to this change, there are two categories of processes:

  • Workflows. The automated or asynchronous processes that may require user input to start them. Further, these processes do not require user input to run them to completion. These processes run in the background.
  • Dialogs. The interactive or synchronous processes that require user input to start and run them to completion. When you start the dialog process, a wizard-like interface is presented to you so you can make appropriate selections to run the process.

Today in this blog post I am going to talk about troubleshooting workflows which would not only help in isolating the issue but also fixing it.

Let’s start with issue isolation:

  1. Was it working fine before?
  2. What all recent changes done to the CRM?
  3. Is this an upgraded environment from CRM 4.0 to 2011? If yes, did you follow the KB article: http://support.microsoft.com/kb/968520 to clean the AsyncOperationBase table prior to the upgrade? If not, please do it.
  4. What is the update rollup installed? It is always advisable to have the latest update rollup installed.
  5. What is the status of the Async service when workflows are failing?
  6. Are other Asyncservice jobs failing too? For more information on Async Service you can also refer: http://msdn.microsoft.com/en-us/library/gg328021.aspx .
  7. Do you get to see any error in the event log for Async service? What is that error? Search on that event error in your favorite search engine. I prefer Bing.
  8. Verify the basic configurations of CRM like:
    1. Match the registry entries on the CRM with the deployment. You can verify the settings at HKLM-->Software-->Microsoft-->MSCRM. Validate the keys – Configdb, CRM_Server_InstallDir, ServerUrl, website and websitepath. These values should match with the deployment.
    2. Validate the account under which CRMAppPool is running. Verify the SPNs for CRM. You can also refer this article which talks about verifying SPNs:
      http://rc.crm.dynamics.com/rc/regcont/en_us/op/articles/configurespn.aspx
      http://blogs.msdn.com/b/crm/archive/2009/08/06/configuring-service-principal-names.aspx
    3. Are you able to access http://localhost/MSCRMServices/2007/CrmService.asmx without any authentication prompt? If not please add this URL under Local Intranet.
    4. You can also refer this link which talks about All System jobs are 'waiting' in CRM 4.0: http://blogs.msdn.com/b/crmindia/archive/2012/02/29/all-system-jobs-are-_2700_waiting_2700_-in-crm-4.0.aspx
  9. Once you are done with validation from step 8. Time to look at CRM Application.
  10. Login as CRM Administrator and navigate to SettingsàSystem Jobs.
  11. Look at the workflows and their status. Is it in Waiting, Failed, and Waiting for Resources………
  12. Double click on the workflow to open it. You would find a message there, analyze it.
  13. Click on Advance Find and follow the below mentioned steps to understand the error/issue better:
    1. Click on Edit Columns.
    2. Then on Add columns.
    3. Select Error Code, Message and Message Name.
    4. Click on Ok. It will add all the three columns to the view.
    5. Now you will be back on Advance Find Dialog box.
    6. In the Look For, select System Jobs and in Use Saved View, select New.
    7. In the first row make it something System Jobs-->Equals-->Workflow.
    8. Then Status Reason-->Equals-->In Progress, Failed, Pausing, Waiting, Waiting for Resources. Something like this:

Advance Find Window should look like this:

For better management perspective I would recommend saving this view which would help in future as well for managing workflows. You can click on Save as and then you should be able to save the view.

Based on the Error code, Message and Message Name, your troubleshooting would flow. Again search on these errors.

After all the above validations you can open a support ticket with Microsoft Dynamics CRM Team to assist on this issue further.

Hope this helps.

Regards,

Ritesh

My Blog: http://blogs.msdn.com/b/ritesh_ranjan/

LinkedIn: http://lnkd.in/dkV2Brj

Twitter: https://twitter.com/riranj

Microsoft Premier Field Engineer

Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 18

$
0
0

Contents:

We're proud to announce that all packages for Microsoft Dynamics CRM 2011 Update Rollup 18 were released on Wednesday, September 24th, 2014 to the Microsoft Download Center!  The Update Rollup 18 packages should appear on Microsoft Update Q4, 2014.

Update Rollup 18 Build number:

05.00.9690.4374

Note: CRM 2011 Update Rollup 18 provides support for Microsoft Exchange Server 2013 Service Pack 1

Important Note: Microsoft Dynamics CRM 2011 Update Rollup 17 and 18 are compatible with Windows 8.1 or Windows 7 and Internet Explorer 11!

This includes the following supported configurations:

  • The browser application running in Internet Explorer 11 on Windows 8.1 or Windows 7
  • Dynamics CRM for Microsoft Office Outlook when running Office 2013 on Windows 8.1

Update Rollup 18 Microsoft Download Center page

Here's the "Master" Microsoft Dynamics Knowledge Base article for Update Rollup 18: KB 2958724

Podcast

On Monday, September 29th 2014 Greg Nichols and Ryan Anderson from the Microsoft CRM Premier Field Engineering Team provided information about:

  • The release of Update Rollup 18 for Microsoft Dynamics CRM 2011
  • New fixes made available In Update Rollup 18

during their Microsoft Dynamics CRM 2011 Update Rollup 18 Podcast.

Note regarding Podcasts: We've recently changed the location of where we are hosting and distributing our podcasts.  See PFE Dynamics Podcast Update for more information.

Go to Top

The "CRM Update Rollup Collateral Page"

For pointers to download locations, release dates, build information, and CRM Premier Field Engineering blogs and podcasts for all Microsoft Dynamics CRM Update Rollups, visit the "CRM Update Rollup Collateral Page"

Go to Top

Cumulative Update Rollup Changes

Update Rollup 18 is a collection of fixes for issues reported by customers or found by Microsoft's Engineering Team, plus changes to provide support for related technology components.

Update Rollup 18 news that you need to know because Update Rollups are cumulative, so these significant changes are also in Update Rollup 18!

 UR12 included the "Microsoft Dynamics CRM December 2012 Service Update"  See:

  • Additional cross-browser compatibility provided
    • The December 2012 Service Update component of Microsoft Dynamics CRM 2011 Update Rollup 12 introduces additional browser compatibility for Firefox, Chrome, and Safari
  • Indexes added to support the Update Rollup 10 Quick Find Optimizations
    • Update Rollup 12 includes new indexes for the following entities in the Quick Find Search Optimization feature. To fully reap the benefits of the platform changes included in Update Rollup 10, indexing is needed.  The indexes created are listed below:
      • Cases
      • Opportunities
      • Competitors
      • Contact (the Phone Number fields)
      • Business Unit
      • Connection
      • Connection Role
      • KB Article
      • Lead
      • Product
      • Sales Literature
    • These indexes are created during the Update Rollup 12 installation and you may notice that part of the installation will take longer to complete. The reason for this is that the indexes need to be populated and based on the size of your dataset the completion time will vary
  • Enhancements to Activity Feeds
    • The enhancements made to the activity feeds include a new feature called Like/Unlike
    • With this feature, you can express your immediate feedback about a post
    • For more information, see Like/Unlike
  • Updated User Experience for Sales and Customer Service and Product Update Functionality for Microsoft Dynamics CRM Online
    • The Microsoft Dynamics CRM December 2012 Service Update introduces a variety of new features and functionality, including an updated user experience. For Sales and Customer Service users, the updated user experience provides a new process flow visualization, which appears at the top of the forms, such as the Opportunity , Lead or Case form. The process flow guides users through the various phases of the sales and customer service processes
    • For trials and subscriptions initiated after December 2012, the updated Sales and Customer Service user experience is included by default. Existing Microsoft Dynamics CRM Online customers have an option of adding the updated user experience to the Opportunity , Lead and Case forms by installing the Product Updates. This lets Administrators install selected feature updates based upon the specific needs of their organizations. The Product Updates are installed by using the Microsoft Dynamics CRM web application; they cannot be installed programmatically
    • For more details, see What's New for Developers for Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online
  • Custom Workflow Activities for Microsoft Dynamics CRM Online
  • Developer Toolkit Support for Microsoft Visual Studio 2012
    • The Developer Toolkit for Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online now supports Microsoft Visual Studio 2012. The installer can be found in the SDK download in the sdk\tools\developertoolkit\ folder
  • Microsoft Dynamics CRM 2011 Software Development Kit (SDK) updated December 19th, 2013 for Update Rollup 15 (version 5.0.18)
  • Bulk Data Load performance enhancements
    • To support bulk data load scenarios, this release introduces the ExecuteMultipleRequest message. This message supports the execution of multiple message requests using a single web method call. ExecuteMultipleRequest accepts an input collection of message requests, executes each of the message requests in the order they appear in the input collection, and optionally returns a collection of responses containing each message’s response or the error that occurred. Processing requests in bulk results in lower network traffic and higher message processing throughput
    • For more information, see Use ExecuteMultiple to Improve Performance for Bulk Data Load
  • Activity Feeds changes
    • Microsoft Dynamics CRM Activity Feeds provide real-time notifications and quick sharing of information through short updates. These updates appear on your personal wall in the What's New area of the Workplace . Activity Feeds enable you to follow and learn about important activities that take place around people, accounts, contacts, leads, and anything else that you care about
    • Updates can be posted manually by you, or automatically based on predefined system rules through a workflow. Activity Feeds can also be posted to by external applications through the Microsoft Dynamics CRM web services API. Activity Feeds expose Microsoft Lync real-time presence functionality so that you can initiate communication activities such as IM, phone calls, and emails. For more information, see Activity Feeds Entities
  • More performance and stability-related fixes, including fixes to the CRM Client for Microsoft Outlook
  • Contains all hotfixes / updates released in earlier Update Rollups
  • Quick Find performance optimizations and EnableRetrieveMultipleOptimization SQL query performance optimizations (originally released in Update Rollup 10)

For Microsoft Dynamics CRM business solutions that include an entity with a large dataset, record retrieval and grid rendering performance can be negatively impacted for users that do not have global access to all records associated with that entity. Code changes to mitigate this behavior first appeared in Microsoft Dynamics CRM 4.0, and have been fine-tuned since then.

With Microsoft Dynamics CRM 2011 Update Rollup 10 and later, big advancements have been made to optimize the performance of queries against large datasets by adjusting specific “statistical” settings to address the issue. Should this fail to achieve desired levels of performance, adjust the value associated with EnableRetrieveMultipleOptimization (ERMO) setting. You may have heard these changes described at Convergence.

A first step in efforts to optimize the performance of queries against large data sets is to make adjustments to the “statistical” settings that affect the behavior of RetrieveMultiple queries. Although you can configure these settings by modifying the Windows Registry (under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM) on the each of the Web servers that is used in a deployment, we recommend that these settings be configured by using the OrgDbOrgSettings, which will ensure that the configuration applies to a specific organization. For additional information about configuring these settings by using the OrgDbOrgSettings, and to download the tool that makes the OrgDbOrgSettings changes you desire, see the Microsoft Knowledge Base article titled "OrgDBOrgSettings Tool for Microsoft Dynamics CRM 2011" (KB 2691237)

If making adjustments to these settings does not yield satisfactory levels of performance, then consider adjusting the value of the EnableRetrieveMultipleOptimization (ERMO) setting. The ERMO setting is commonly used to limit the duration of certain long running queries; specifically, to overcome issues related to local or deep business unit access within Microsoft Dynamics CRM 2011 security roles.

Many more details describing appropriate scenarios for the available settings are already available via the Microsoft Download Center in a revised version of the whitepaper "Optimizing and Maintaining the Performance of a Microsoft Dynamics CRM 2011 Server Infrastructure", in the sections “Optimizing the Performance of Queries against Large Datasets” and “Optimizing the Performance of Quick Find Queries”. The details are also available in the MSDN version of this whitepaper.

Go to Top

OrgDbOrgSettings Editors:

You're probably familiar with the OrgDbOrgSettings command line tool (mentioned above) released by the CRM Product Group in the "Tools" package that is updated and released with each set of Update Rollup packages.  With it, you configure some .xml and call your .xml with the command line utility described in KB 2691237. However, you may be daunted by configuring this .xml, to the point that you may not use the tool, or use it minimally - not exploring the many options outlined in KB 2691237 that may be of use to you.  Well, the Microsoft Dynamics PFE team now has another option for you!  By popular demand, our esteemed CRM PFE colleague Sean McNellis has developed a tool  - a CRM 2011 / 2013 managed solution - that provides you with an easy-to-use GUI with which you can configure all of the options outlined in the Knowledge Base on a per-tenant basis.  Feel free to download it, install it, and check it out... I sure use it!

This is a FREE downloadable tool - the "Dynamics CRM 2011 Organization Settings Editor".  Check it out; the download page has screenshots and information that will help you make good use of the tool.  Sean has also published a Premier Field Engineering blog: "Azure Mobile + JavaScript + WebResources = Easy Editing of OrgDBOrgSettings in Dynamics CRM 2011!" to share more details on the tool. It is currently updated to include setting for CRM 2011 Update Rollup 16 and CRM 2013 Update Rollup 2, and he takes pride in keeping it updated. Thanks, Sean!

Note: there is a code issue with the CRM Client for Microsoft Outlook that was resolved in Update Rollup 16 Client packages.  Do not set either the AddressBookMaterializedViewsEnabled or DisableMapiCaching settings in the Organization entity metadata via the OrgDbOrgSettings tool in the Update Rollup Tools package or the Organizational Settings Editor on Codeplex if you are not running CRM 2011 Update Rollup 16 or higher on the Client.  Also, do not set this key prior to the next major release of CRM 2013.

Go to Top

NOTE REGARDING "Deferring Database Updates when installing CRM 2011 Update Rollups"

My esteemed PFE teammate Sean McNellis published a blog you should be aware of regarding the possibility of deferring the CRM database updates when installing CRM 2011 Update Rollups.  Essentially, Dynamics CRM 2011 Update Rollup executable packages automatically process and update the organization database updates during the installation.  If your deployment has several large tenants or just one very large tenant you may prefer to first install the “binary” updates and worry about applying the database updates after the binary installation of the rollup (on an organization by organization basis). This would put the control and timing of when to update organizations from a SQL perspective in the hands of the administrator, and may make troubleshooting easier.

This feature allows you to separate the installation of the binary updates (DLL’s, executables, etc) from the installation of the database components (updated stored procedures, UDFs (user-defined functions), schema updates, out-of-box index changes, etc). Both updates still need to be completed as part of the update but you can now separately manage and execute those operations. This also allows you to retry database updates if they timeout or do not complete, without jeopardizing the installation binary updates.

I strongly urge you to read the entire blog to see if it applies to your needs.  Thanks again, Sean!

Go to Top

General Update Rollup Notes:

  • Testing Update Rollups: Best Practices
    • Premier Field Engineering recommends treating Update Rollup 12 (and above) testing like testing a new, major CRM release because of the introduction of new functionality introduced with the December 2012 Service Release. Do all the standard testing like you generally do for all UR’s, but then also all the functional and performance testing that you would do with a new major release
    • The “general rule of thumb” for test plans for Update Rollup installs are:
      • Test any changes in a pre-production environment BEFORE introducing into your production environment. Manage your risk!
      • Consider using the Performance Toolkit for Microsoft Dynamics CRM 2011 to simulate your production user load in your testing environment, to shake out any performance-related issues early
      • Test using the permissions your end-user roles (most restrictive) have. Testing with CRM Administrator permissions, for example, does not give you the complete picture
      • Concentrate on your SDK customizations, JavaScript, ISV add-ons – basically anything that’s not OOB functionality or customizations done from within the UI

Microsoft Dynamics CRM 2011 and 2013 Custom Code Validation Tool

    • Consider familiarizing yourselves with this tool!
    • The Custom Code Validation tool for CRM 2013 is mostly the same as the Code Validation Tool for CRM 2011 UR12; the 2011 version has been deprecated and is no longer available. We added some additional checks for things that reference the 2007 endpoint or other things that will go away in 2013, so it's best to start removing them now. And, most of the checks in the tool were built into the installer for CRM 2013 as validation checks
    • Note that the URL for the CRM 2011 version of the tool now directs to the CRM 2013 version
    • Use the Microsoft Dynamics CRM 2011 Custom Code Validation Tool to identify potential issues with custom JavaScript in JavaScript libraries and HTML web resources. The Microsoft Dynamics CRM Online Q2 2012 Service Update and Microsoft Dynamics CRM 2011 Update Rollup 9 include significant changes in the web application in order to be able to support a variety of browsers such as Safari, Chrome, and Firefox. When using JavaScript code in Dynamics CRM, it is possible that some code will stop working or cause an error when you upgrade. The Microsoft Dynamics CRM 2011 Custom Code Validation Tool helps identify potential problems so that a developer can fix them
  • Update Rollup 12+ require Microsoft .NET Framework 4
  • Update Rollup 6 established a new servicing baseline. This will enable uninstalls of some future CRM 2011 Update Rollups, but this also means that Update Rollup 6 is prerequisite for installation of all future Microsoft CRM 2011 Update Rollups starting with Update Rollup 7
  • A database created with Microsoft Dynamics CRM 2011 Update Rollup 6 or a higher version cannot be imported to a deployment of Microsoft Dynamics CRM 2011 Update Rollup 5 or an earlier version. This scenario is not supported.  Best practice is to import databases or customizations between environments that are at the same Update Rollup level
  • As Update Rollup 18 is cumulative, containing all changes released in earlier Update Rollup releases, it also contains the Dynamics CRM Q4 Service Update features released via Update Rollup 6.  Some of these features include:
    • Outlook Client Updates:
      • Dialog Enhancements
      • Data Visualization Enhancements:
        • Chart Designer Enhancements
        • New Chart Types
      • Data Management Enhancements to:
        • Auditing
        • Duplicate Detection
      • Activity Feeds
        • Listening in on important activities in Social Media that take place around the people, accounts, contacts, leads or opportunities that you care about, including a Windows 7.5 phone application: "Business Hub"
        • Update Rollup 5 does not install Activity Feeds:

For more information about the Dynamics CRM Q4 2011 Service Update features, consult:

Go to Top

Update Rollup 18 packages are available for download via: 

  • The Update Rollup 18 Microsoft Download Center page (released September 24th, 2014)
  • The Microsoft Update Catalog - all packages have a planned release date in Q4, 2014
  • The Microsoft Update detection / installation process
    • Note: Microsoft Dynamics CRM 2011 Updates will be pushed via Microsoft Update as Important updates
    • Client packages installed manually by downloading the packages and running install will require local administrator privileges. If the client packages are installed via Microsoft Update or SCCM (System Center Configuration Manager), they will not require local administrator privileges
    • Consider using Windows Server Update Services (WSUS) or similar software distribution technologies to distribute Dynamics CRM Update Rollups internally.  WSUS is a locally managed system that works with the public Microsoft Update website to give system administrators more control. By using Windows Server Update Services, administrators can manage the distribution of Microsoft hotfixes and updates released through Automatic Updates to computers in a corporate environment
    • For help with installation please see the Installation Information section of the Update Rollup 17 "master" Microsoft Knowledge Base article
    • Please review my teammate Shawn Dieken's superb (and recently updated) blog posting "How to install Microsoft Dynamics CRM 2011 without an Internet Connection" which provides details on how to set up an install on a machine without access to the Internet
    • Please review my former teammate Jon Strand's equally superb blog posting "CRM 2011: Silently Installing Update Rollups" which provides details on installing CRM Outlook client update rollups "silently" in order to limit end-user interruption

for these CRM components:

NOTE: On Jan. 20th, 2012 these installation files were updated to include CRM 2011 Update Rollup 6 (Build 05.00.9690.1992)

Go to Top

 Microsoft Dynamics CRM 2011 Update Rollup 18 Prerequisites:

  • Essentially the prerequisites listed in the Microsoft Dynamics CRM 2011 Implementation Guide download or online versions for the various CRM components serviced
  • You must have Microsoft Dynamics CRM 2011 Update Rollup 6 installed (build 5.0.9690.1992) to apply this Update Rollup

Note regarding Microsoft Dynamics CRM Stack Technology Compatibility:

Do you want to know if certain Service Packs or versions of a Microsoft product are supported with Dynamics CRM? Now we have all of this in one “living" Knowledge Base article: the Microsoft Dynamics CRM Compatibility List.  For example, you can use this KB article to determine the latest Microsoft SQL Server major version and Service Pack that is supported. Microsoft lists new products like Internet Explorer 11+ and Microsoft Windows 8.x as TBD until testing is complete; generally near General Availability (GA) of that product.

Go to Top

Issues resolved via Microsoft Dynamics CRM 2011 Update Rollup 18: 

Microsoft Dynamics CRM 2011 Update Rollup 18 is the seventeenth (considering that Update Rollup 9 was not released publicly) of a series of cumulative Update Rollups that include fixes for the issues that are or will be documented in the "Master Knowledge Base Articles" for CRM 2011 Update Rollups.  As they are cumulative, Update Rollup 18 contains all fixes shipped via Update Rollups 1-18, including fixes that were never publicly released via Update Rollup 9.

  • PrincipalObjectAccess records are orphaned when the script is run from http://support.microsoft.com/kb/968520
  • Synchronizing updated Tasks from CRM to Outlook causes duplicates to appear in Outlook
  • Users attempting to save a Goal that has a count metric type that uses a custom rollup field (integer) in Microsoft Dynamics CRM 2011 will encounter the following error:
    •  "A Rollup Query cannot be set for a Rollup Field that is not defined in the Goal Metric"
  • Error when importing a Managed Solution for an entity with Many to Many (N:N) Relationships with Offline Capability for CRM for Outlook checked:
    • "ManyToManyRelationshipService.Update caught exception: System.ArgumentException: An item with the same key has already been added."
  • If you Add or Delete a field from a form in Form Designer which also contains a sub-grid that is set to auto-expand, then the auto-expand will fail after a Save and refresh is performed
  • Users of the Microsoft Dynamics CRM 2011 Client for Outlook may experience slow performance in views if those views contain attributes with the Option Set data type
  • After installing Update Rollup 16 or Update Rollup 17 on CRM 2011, users that are members of teams with an assigned security role can no longer access CRM and receive a 404 error
  • If you have more than 3 recipients on an Appointment that are not available, then the Scheduling Alert does not pop up and the Appointment will not be saved
  • Emails are sent out from Outlook with duplicated tracking tokens
  • The sort order for a view changes when switching back to a view where one had previously defined a custom sort order
  • When a Managed Solution is imported that updates an existing solution that contains customizations from another Managed Solution, not all labels included in the update are applied to the system
  • When replying to an email from within the CRM for Outlook client, duplicate records are created in the ActivityPointerBase table
  • The Create Activity dialog fails to open during a Mail Merge operation
  • Each LookupMru entry in the UserEntityUISettingsBase table is added to the OfflineQueue table for offline functionality of the CRM for Outlook client, even though no changes to the record or the MRU list have been made, which can cause performance issues
  • When you upgrade to Update Rollup 16 or Update Rollup 17 for CRM 2011 and you have workflows that contain wait conditions on attributes, the wait conditions may fail if they are not one of the following attribute types:
    • DateTime, Status, Boolean, Decimal, Float, Money, Integer, Picklist/OptionSet
    • This occurs if you have enabled the OrgDbOrgSetting: ActivateAdditionalRefreshOfWorkflowConditions
  • If a user opens a record from a parent record such as an Account in the Outlook Client and then clicks a link on that record to take them back to the parent record, the focus on the parent record does not occur
  • After installing Update Rollup 12, there are changes to the Microsoft Dynamics CRM 2011 forms that may impact the visually impaired such as lighter colors and the absence of highlighting on items such as the SiteMap and Tab titles
  • After installing Update Rollup 17, summary values do not show when Report Wizard built reports are saved to Excel
  • After installing Update Rollup 17 users can no longer use the backspace button in any text fields if they are not using the System Setting "Load pages in the most recent version of Internet Explorer"
  • When synchronizing recurring Appointments from the Microsoft Dynamics CRM Client for Outlook in Microsoft Dynamics CRM 2011, users receive frequent reminder notifications even if the reminder is dismissed
  • When attempting to page through Quick Find results in the Microsoft Dynamics CRM 2011 Client for Outlook after sorting, users receive the following error:
    • "There was an error displaying the records in this view"
  • Memory leaks can occur during solution import when plugin assemblies are included in the solution
  • When you register a plugin assembly that contains custom workflow activities in one version of .NET framework, and the plugin assembly is updated in Visual Studio to use a different version of .NET framework, you are not able to use the additional custom workflow activity in the workflow editor
    • This occurs because the assembly is loaded in the primary appdomain for the W3WP process
  • When you copy or clone a Contract from the ribbon on a Contract record, the cloned Contract is shown. If you then modify the cloned Contract and press Save, the original Contract is shown after the Save completes
  • If a user’s logon domain is different from the Fully Qualified Domain Name, Deployment Manager crashes while opening
  • When a user has delegate access to a Calendar and they receive a Meeting Request for another user, the Appointment is never created in CRM:
    • The Appointment states, "This meeting will be tracked in CRM after it is saved or sent"
  • When calling AddMembersTeamRequest to a Team that has been shared to a record simultaneously to two or more Teams with the same set of members, blocking in the database on the Subscription.ReInitialize column if the members are configured for Outlook
  • Daylight Savings Time rules are incorrect for Egypt time zones after installation of Fix It updates for Windows
  • Workflows are triggered after resolving a case, even if the fields are not updated when the Form Assistant is enabled
  • Tracking an email through the CRM Email Router in CRM 2011 when there are two images embedded in the body and one image is a link to an image (url), the image that was not the link is duplicated and replaced the one with the link
  • When the AddressBookMaterializedViewsEnabled OrgDbOrgSettings value is set to True, and Update Rollup 16 is installed on the server and client, searching for records in the CRM client for Outlook Address Book will not return correct records and the sort order may be incorrect
  • Changing the SharePoint display language breaks the CRM to SharePoint Integration
  • When printing the results of an Advanced Find view in Microsoft Dynamics CRM 2011, users will notice that some rows are incomplete due to page breaks occurring on the page
  • Adding a read-only duration field to the Microsoft Dynamics CRM 2011 Appointment form prevents the start and end dates from defaulting to today's date and time
  • When using the CRM for Outlook client with Update Rollup 16 applied a Quick Find search on the Account entity shows correct columns on the first search. If you search a second time with the same or different search phrase, columns which belong to related entities are missing in the result set
  • After Update Rollup 16 is applied, Silverlight web resource grids formatted with "Use available area (Stretch to Fit)” no longer sizes the grid height properly
  • Clicking the Mail Merge button in the ribbon bar of the Advanced Find screen when an entity is selected on the sub-grid, the Mail Merge window does not open
  • Under certain conditions, emails that are tracked and sent will not successfully promote to Microsoft Dynamics CRM and the user will receive an error:
    • “Unknown error occurred while synchronizing data to Outlook.Item Name=SUBJECT”
  • Updated Conditional formatting on Outlook does not show updated results
  • In the Dynamics CRM Outlook Client, when going back Online, the ActualEnd value is reset on an Activity that was completed while offline
  • After updating the Microsoft Dynamics CRM 2011 Client for Outlook past Update Rollup 11, users are no longer able to scroll through the email description field contents using the Reading Pane
  • Emails are sent with duplicate tracking tokens
  • An error occurs " intermittently when running reports:
    • "MSCRM Data Connector Not Installed"
  • The "Set this computer to be the Synchronizing client" option does not take effect when selected
  • DST change Russian time zone changes
  • Adding a read-only duration field to the Microsoft Dynamics CRM 2011 Appointment form prevents the start and end dates from defaulting to today's date and time
  • After installing Update Rollup 17, the ViewID attribute of the NavBarByRelationshipItem tag in FormXML is not being respected
  • After upgrading to the latest CRM 2011 List Component for SharePoint 2010, a script error occurs, which will typically block the prompt on whether or not the user wants to create the folder location:
    • SCRIPT5009: 'IsNull' is undefined createfolder.aspx, line 11 character 4
  • If You are assigning Team Membership via plugin, the user Cache does not get invalidated, causing an error when trying to retrieve a record
    • The issue occurs if the Team is has a security role and Access Rights are controlled via Team ownership
  • Dynamics CRM 2011 with SharePoint 2010 or 2013, the edit properties page not scrollable when list has multiple fields
  • You execute a report after installing Update Rollup 17 for CRM 2011 and suddenly receive rsProcessingAborted errors when running reports
  • When you receive a mail from Outlook with numbered list (auto-numbering) in the email body into CRM and reply to this from within the web client, the email layout is changed and body does not display the numbering of the first level of auto-numbers
  • Outlook Email Form does not open once the focus is changed to Inbox from CRM folders
  • Invalid time set/displayed when using custom time formats
  • JavaScript error occurs when navigating on the forms for Facilities and Equipment:
    • “Unable to get property ‘raiseEvent’ of undefined or null reference”

Go to Top

Hotfixes and updates that you have to enable or configure manually

  • Occasionally, updates released via Update Rollups require manual configuration to enable them. Microsoft Dynamics CRM Update Rollups are always cumulative; for example, Update Rollup 16 contains all fixes previously released via Update Rollups 1-15 as well as fixes newly released via Update Rollup 16. So if you install Update Rollup 16 on a machine upon which you previously installed no Update Rollups, you will need to manually enable any desired fixes for Update Rollups 1-16:
    • Update Rollup 1: no updates requiring manual configuration
    • Update Rollup 2 for Microsoft Dynamics CRM 2011 contains the following update that you must enable or configure manually - details on enabling or configuring can be found in this Microsoft Knowledge Base article:
      • 2535245 RetrieveMultiple optimization for basic depth needed for local and deep depth read privileges in Microsoft Dynamics CRM 2011
      • NOTE: see comments near the beginning of this blog regarding significant rework to EnableRetrieveMultipleOptimization released in Update Rollup 10
    • Update Rollup 3: no updates requiring manual configuration
    • Update Rollup 4: no updates requiring manual configuration
    • Update Rollup 5: no updates requiring manual configuration
    • Update Rollup 6 for Microsoft Dynamics CRM 2011 contains the following update that you must enable or configure manually - details on enabling or configuring can be found in this Microsoft Knowledge Base article:
      • 2664150  Steps to clean up the PrincipalObjectAccess table in Microsoft Dynamics CRM 2011 after Update Rollup 6 is applied
    • Update Rollup 7: no updates requiring manual configuration
    • Update Rollup 8: no updates requiring manual configuration
    • Update Rollup 10 (includes hotfix components of Update Rollup 9): no updates requiring manual configuration to enable, but
      • Note my above comments regarding ERMO (EnableRetrieveMultipleOptimization) option configuration via registry keys or (preferred) OrgDbOrgSettings updates
      • This information supercedes the information in KB 2535245, which discusses EnableRetrieveMultipleOptimization enhancements shipped in CRM 2011 Update Rollup 2
    • Update Rollup 11 for Microsoft Dynamics CRM 2011 contains the following update that you must enable or configure manually - details on enabling or configuring can be found in this Microsoft Knowledge Base article:
      • 2820838 Microsoft Dynamics CRM E-mail Router Rule Deployment Wizard does not work in an Exchange 2003 and Exchange 2010 mixed environment
    • Update Rollup 12 for Microsoft Dynamics CRM 2011 contains the following update that you must enable or configure manually - details on enabling or configuring can be found in this Microsoft Knowledge Base article:
      • 2820835 Sync the private property from Outlook appointments to Microsoft Dynamics CRM 2011 with Update Rollup 12
    • Update Rollup 13: no updates requiring manual configuration
    • Update Rollup 14: no updates requiring manual configuration
    • Update Rollup 15: no updates requiring manual configuration
    • Update Rollup 16: no updates requiring manual configuration
    • Update Rollup 17 for Microsoft Dynamics CRM 2011 contains the following update that you must enable or configure manually:
      • When you attempt to deploy a mailbox rule using the forward mailbox rule deployment wizard, with a split deployment for Exchange 2010 where your mailbox servers are not client access servers, you receive an error: Failed to access the default store for the user. To enable this fix,
        • On the Email Router machine, add a new String value Key named "CASServerName" in the path HKEY_Local_Machine\Software\Microsoft\MSCRMEmail, then:
        • Enter the NetBIOS name of one of the Exchange CAS servers
    • Update Rollup 18: no updates requiring manual configuration

Go to Top

Mismatched Update Rollup versions within a Microsoft Dynamics CRM deployment

In a scenario where you may be running many client workstations with Microsoft Dynamics CRM 2011 for Microsoft Office Outlook, a common question is whether it is supported to run mismatched versions. For example, where Update Rollup 5 has been installed on the CRM Server but the Outlook clients are still on Update Rollup 1, or where Update Rollup 1 is on the CRM server but due to updates available to the Outlook client you have decided to install Update Rollup 6 on the clients without installing Update Rollup 4 on the server.

The general rule of thumb is to try to keep the versions in sync as much as possible, and we recommend that you avoid deltas of more than one version between client and server.  So ideally, you would be running Update Rollup 14 server with Update Rollup 13 or 14 on your Outlook client. However, it is permissible (though not recommended as a long-term solution) to run mismatched Update Rollup versions on Outlook client and server, as Microsoft does do some testing of such combinations.

However, regarding the other Update Rollups (for example Rollups for the Microsoft Dynamics CRM 2011 Email Router or Microsoft Dynamics CRM 2011 Reporting Extensions), it is not supported nor recommended to run mismatched versions. A best practice is to update these components at the same time you update your CRM Server.  Do the best you can to keep these Update Rollup versions in sync.

For more information, see the blog posting "User experience while accessing CRM 2011 application servers while Update Rollups are being applied"

Go to Top

Microsoft Dynamics CRM compatibility with technology stack components: Internet Explorer, Windows Client and Server, Office, .NET Framework, and more

The Microsoft Dynamics CRM Engineering team consistently tests Microsoft Dynamics CRM 2011 against pre-release and release versions of technology stack components that Microsoft Dynamics interoperates with. When appropriate, Microsoft releases enhancements via future Microsoft Dynamics CRM 2011 Update Rollups or new major version releases to assure compatibility with future releases of these products. This compatibility matrix is updated via this Microsoft Knowledge Base article: Microsoft Dynamics CRM Compatibility List.

 

Greg Nichols
Senior Premier Field Engineer
Microsoft Corporation

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CRM2011UR18Podcast.mp3

Podcast and Overview: Update Rollup 1 for Microsoft Dynamics CRM 2013 Service Pack 1

$
0
0

Contents:

We're proud to announce that all packages for Update Rollup 1 for Microsoft Dynamics CRM 2013 Service Pack 1 were released on Tuesday, September 23rd, 2014 to the Microsoft Download Center!  These Update Rollup packages should appear on Microsoft Update in Q4 2014.

Update Rollup 1 for Service Pack 1 Build number:

6.1.1.132

Update Rollup 1 for Service Pack 1 Microsoft Download Center page

Here's the "Master" Microsoft Dynamics Knowledge Base article for Update Rollup 1 for Service Pack 1: (KB 2953252). Going forward, the plan is for the Master Knowledge Base articles for CRM Update Rollups and Service Packs to be published a bit in advance of release to aid planning.

Podcast

On Wednesday, September 24th 2014, Greg Nichols and Ryan Anderson from the Microsoft CRM Premier Field Engineering Team provided information about:

  • The release of Update Rollup 1 for Service Pack 1 for Microsoft Dynamics CRM 2013
  • New fixes made available In Update Rollup 1 Service Pack 1

during their Microsoft Dynamics CRM 2013 Update Rollup 1 for Service Pack 1 Podcast

Note regarding Podcasts: We've recently changed the location of where we are hosting and distributing our podcasts.  See PFE Dynamics Podcast Update for more information.

Go to Top

The "CRM Update Rollup Collateral Page"

For pointers to download locations, release dates, build information, and CRM Premier Field Engineering blogs and podcasts for all Microsoft Dynamics CRM Update Rollups and Service Packs, visit the "CRM Update Rollup and Service Pack Collateral Page"

Go to Top

Important note:

An updated Unified Service Desk (Build 06.01.0001.0132) has been released as part of Update Rollup 1 for Microsoft Dynamics CRM 2013 SP1. See the following Microsoft Download Center webpage for download details:

Unified Service Desk for Microsoft Dynamics CRM 2013

General Upgrade Rollup and Service Pack Notes:

  • Testing CRM 2013 Update Rollups: Best Practices
    • Microsoft Dynamics CRM Premier Field Engineering recommends doing all the standard testing you generally do for all Update Rollups, which could be the functional and performance testing that you would do with a new major release or a subset of that test plan
    • The “general rule of thumb” for test plans for Update Rollup installs are:
      • Test any changes in a pre-production environment BEFORE introducing into your production environment. Manage your risk!
      • Consider using the Performance Toolkit for Microsoft Dynamics CRM to simulate your production user load in your testing environment, to shake out any performance-related issues early. The CRM 2011 version is currently being evaluated against CRM 2013, but CRM Premier Field Engineering can help you use the CRM Performance Toolkit with CRM 2013
      • Test using the permissions your most restrictive end-user roles have. Testing with CRM Administrator permissions, for example, does not give you the complete picture
      • Concentrate on your SDK customizations, JavaScript, ISV add-ons – basically anything that’s not OOB functionality or customizations done from within the UI

Go to Top

Update Rollup 1 for Service Pack 1 packages are available for download via: 

to update the Dynamics CRM Product installations listed in this Microsoft Knowledge base article:

Microsoft Dynamics CRM Installations, Updates and Documentation

Note: Microsoft Dynamics CRM 2013 Updates will be pushed via Microsoft Update as Important updates

  • Client packages installed manually by downloading the packages and running install will require local administrator privileges. If the client packages are installed via Microsoft Update or SCCM (System Center Configuration Manager), they will not require local administrator privileges
  • Consider using Windows Server Update Services (WSUS) or similar software distribution technologies to distribute Dynamics CRM Update Rollups internally.  WSUS is a locally managed system that works with the public Microsoft Update website to give system administrators more control. By using Windows Server Update Services, administrators can manage the distribution of Microsoft hotfixes and updates released through Automatic Updates to computers in a corporate environment
  • For help with installation please see the Installation Information section of the Service Pack 1 Update Rollup 2 "master" Microsoft Knowledge Base article
  • Please review my former teammate Jon Strand's blog posting "CRM 2011: Silently Installing Update Rollups" which provides details on installing CRM Outlook client update rollups "silently" in order to limit end-user interruption, which also applies to CRM 2013 and CRM 2015 Update Rollups and Service Packs

Go to Top

Microsoft Dynamics CRM 2013 Update Rollup 1 for Service Pack 1 Prerequisites:

  • Essentially the prerequisites listed in the Microsoft Dynamics CRM 2013 Implementation Guide download for the various CRM components serviced

Go to Top

Issues resolved via Microsoft Dynamics CRM 2013 Update Rollup 1 for Service Pack 1: 

Microsoft Dynamics CRM 2013 Update Rollup 1 for Service Pack 1 contains fixes for issues reported by customers or discovered via internal testing.

Fixes released via CRM 2013 Update Rollup 1 for Service Pack 1:

  • The lookup view for the Site entity in Microsoft Dynamics CRM 2013 is not sorted by name
  • Recently Viewed Record List Becomes Empty After Update
  • Option Set is not selected on first click
  • Forms lose focus when using lookup field in CRM for Outlook
  • Emails with attachments created while in Offline mode throw an error while going Online if user is set to use CRM Email form as the default email form for Outlook
  • Duplicate records created if Save or Save and Close is pressed multiple times
  • If there is a web resource being called using a button within the ribbon and resource is updated, the updates are not shown when the CRM for Outlook client is Offline
  • Command bar disappears when you click on the button for a custom web page
  • When tracking an email through the CRM Email Router, when there are two images embedded in the body and one of the images is a link to an image (url), the email that is not a link to an image gets duplicated and replaces the one with the link
  • Options Sets with no label disappear when trying to change their value
  • Unable to select body in completed Email activities
  • Consider the scenario where the "subjectid" field on an entity form is set to Business Required
    • In this scenario when "subjectid" receives focus without providing a value and then loses focus the field will thereafter show the Field Validation message "You must provide a value for Subject"
    • This message will be displayed with the Validation Error icon even if valid "subjectid" value is provided
    • This validation error prevents the user for saving the record. "subjectid" getting focus without a value can be due to user interaction clicking, field getting focus form onload or by calling setfocus in jscript.
      Issue occurs moving across pages when using Next Record or Previous Record button on a form to move to second item after crossing the page boundary
      • 1. The 'previous record' button becomes disabled after you cross grid pages
      • 2. After crossing a page boundary the 'Next Record' is available to click but does nothing
  • Unable to configure CRM for Tablets on iOS7 devices
    • Not caused by a specific entity, just the combination of many customized entities
  • Cannot uninstall Managed Solution after Service Pack 1 Product Updates have been applied
  • CRM 2013 does not support CEIP Option disabling through the XML config file
  • When you apply conditional formatting to a CRM view in the CRM for Outlook Client, you receive an error when changing the sort order and navigating to page 2 of this view:
    • "There was an error displaying the records in this view."
  • Date field in the Note wall displays incorrectly in en-AU environment
  • Forms opened as the result of the Convert To, Set Regarding, or Set Parent ribbon actions cause the forms to be opened in the Outlook process rather than the WebFormsHost process, which may cause Outlook to become unstable
  • After Applying CRM 2013 Service Pack 1, Automatic Resolution does not work when using TAB key
  • Users clearing the value on a business required lookup field may notice that any onChange events attached to that field are executed twice using the field's old value
  • In an Opportunity that you have created, click + beside "Sales Team" sub-grid, select "Lookup more records" and select multiple users
    • When you press OK, there will be an error on the page and not all users are added
  • When programmatically making visible tabs that contain several subgrids, the size of these subgrids is not recalculated causing the layout to be scrambled
  • Daylight Savings Time rules will be incorrect for Egypt time zones after the installation of the "Fix It" updates for Windows
  • CRM accesses https://ecn.dev.virtualearth.net:443  even when you turn off Bing Map integration
  • CRM reports embedded in IFRAME objects (on forms / dashboards /etc...) no longer display correctly when using Internet Explorer 9 or Internet Explorer 10
  • After adding a Connections sub-grid to an entity form in Microsoft Dynamics CRM 2013, clicking on the plus(+) button doesn't open a window to add the record
    • Additionally, users will see a 'Error on Page' status at the bottom of the browser window
  • When navigating away from an area that links to content hosted on a different site than the CRM web, you receive a blank page and a script error occurs
  • German translation corrected for the Phone Call Activity, to show "Anrufen mit"
  • 'Add Existing Competitor' button does not work as expected when you add the OOB Competitor N:N relationship to the Opportunity form navigation
  • Users migrating databases from external systems to Microsoft Dynamics CRM 2013 will experience Generic SQL Errors:
    • Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding
  • The Business Process Error dialog that contains the debug file is not displayed when a profiled plugin is executed on a grid refresh. An unhandled exception occurs instead
  • Script error occurs when selecting a party type field in a Business Rule action
  • Cannot display Notes intermittently if setting Note as the default tab of the social panel
  • When trying to change the parent account relationship behavior:
    • On the first try everything goes well but after saving and publishing all customizations any change will be not be saved
    • The following error is thrown: The related entity has already been configured with a parental relationship or a relationship where some behaviors cascade. Select the referential relationship type
  • Cannot switch between Product lines using arrows when Product Inline Edit View
  • Cannot upgrade solutions with custom activity entities after upgrading from CRM 2011 to CRM 2013
  • When the ownership of an Opportunity changes in Microsoft Dynamics CRM 2013, the ownership of the corresponding Lead also changes
  • Consider the scenario when an entity record window is a popup outside of the CRM 2013 application:
    • When a user navigates to a related entity associated view and clicks on the Opportunity name on the form, the system takes the user back to new Opportunity form instead of returning to the form for the existing record
  • Clicking on a HTML Web Resource within an IFrame does not perform the Mscrm.SimpleInlineControlEditView.prototype.onPageClick which then forces a call to Mscrm.FormDataControl.prototype.setAttributeValueFromControl
    • This calls Mscrm.FormDataControl.prototype.setAttributeValue to update the value of the attribute in a newly updated text Mscrm.TextBoxControlEditView so that when script is run inside the IFrame and accessing parent.Xrm.Page the value is incorrect
  • When you apply conditional formatting to a CRM View in the Outlook Client, you receive an error when changing the sort order and navigating to page 2 of this view:
    • "There was an error displaying the records in this view."
  • Users of modified Lookup views in Microsoft Dynamics CRM 2013 may notice attributes being rendered in the lookup are not part of the layout
  • When a user who has delegated access to a calendar receives a Meeting Request for another user, if they track the item in CRM and then try and set the regarding object, the appointment is never created in CRM
    • The appointment states, "This meeting will be tracked in CRM after it is saved or sent"
  • After upgrading to CRM 2013 you are not able to import translations for display strings when other languages have been enabled and were customized prior in CRM 2011
  • CRM users who accept and track appointments received from a sender using a POP3 email provider such as Hotmail or Gmail may notice duplicate Appointments in Microsoft Dynamics CRM
  • When using Server Side Sync and configuring User’s mailboxes for Email sync, embedded images within emails are not displayed when using the web client to view the tracked email
  • When revising a quote on a form that utilizes a custom business process flow in Microsoft Dynamics CRM 2013, users will receive the following error:
    • Unexpected Error An error has occurred Downloading the error log provides additional information: Crm Exception: Message: An unexpected error occurred., ErrorCode: -2147220970, InnerException: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index at System.Collections.CollectionBase.System.Collections.IList.get_Item(Int32 index) at Microsoft.Crm.ObjectModel.BusinessProcessFlowServiceInternalHandler`1.NavigateToNextEntity(Guid currentEntityId, String currentEntityLogicalName, Guid nextEntityId, String nextEntityLogicalName, Guid processId, ExecutionContext context)
  • When enabling filtering on a view, if the user's screen cannot display all the columns on the page simultaneously, the filtering button (funnel) covers the drop-down on the last column
  • When viewing the result of a Rollup Query, an error occurs when a column is added from Account into Contract Line's Advanced Find View, and the Entity Type is set as Contract Line
  • When Accessing CRM application using the MOCA client, system deactivated views are still available and selectable from within the MOCA client
  • After updating the Unsecure Configuration for one of the existing plugin steps for the ActivityFeeds.Plugins to not contain XML, it will cause the Async service to crash in Microsoft Dynamics CRM 2013.
    When attempting a lookup on a field that will be filtered by a N:N relationship, the following two errors are shown:
    • There was an error while trying to resolve the typed in text. Please use the lookup dialog to set the value
    • An error occurred. Please try your search again
  • Consider this scenario where you have a CRM 2013 environment that was upgraded or has 2011 customizations imported:
    • When customizing an Entity's new Refreshed form using the "Merge Forms" functionality some Event Handlers are merged but do not appear in the Form Properties Event Handlers section
    • When adding the script event handlers manually it is observed that the scripts fire twice
      • This occurs for any control that already has a CRM internal or manually added Event Handler on the target Refresh form
  • Mobile application fails to configure due to metadata inconsistency in views
  • Users attempting insert an Email Template with an attachment into an Email in Microsoft Dynamics CRM 2013 get a dialog:
    • 'This template contains attachments. If you want attachments as a part of your email. Click Cancel. Save the email, and then re-apply the template. To continue without the attachments, click OK.”
    • This occurs even if the email has been saved previously
  • Users of the Microsoft Dynamics CRM 2013 Client for Outlook are prompted to enter credentials when downloading attachments
  • When selecting a Price List, while adding Existing Products within an Opportunity, the Price List selected using the default view "Price List Items in Entity Price List" would only show the Product icon and not the name of the Product
  • When opening a record containing a reference to a child record using a quickview control, that does not have access to the child record and will prevent you from opening the parent record, resulting in a privilege error even though you have full permissions on that parent record
  • Realtime workflow on a partylist field picks up the wrong field value
  • When you upgrade to Service Pack 1 CRM 2013 and you have workflows that contain wait conditions on attributes the wait conditions may fail if they are NOT of the following attribute types:
    • DateTime
    • Status
    • Boolean
    • Decimal
    • Float
    • Money
    • Integer
    • Picklist/OptionSet
    • This occurs if you have enabled the OrgDbOrgSetting: ActivateAdditionalRefreshOfWorkflowConditions
  • When you attempt to export a view to Excel from the explorer ribbon in the CRM client for Outlook an error is received:
    • The error is received if the view that you are exporting contains attributes from related entities and the total number of attributes is 10 or greater
    • This begins to occur after Service Pack 1
    • Useful error information can be obtained from the server platform traces Platform Error: >Crm Exception: Message: Number of link entities in query exceeded maximum limit., ErrorCode: -2147204339
  • Secondary category picklist values are not sorted in comparison charts even if an order is specified in the chart definition
  • Selecting multiple products causes duplicated Product line records in SalesOrder
  • While setting the SetRegardingLookupDefaultEntityType OrgDbOrgSetting in Microsoft Dynamics CRM 2013, the setting is correctly applied but the Lookup dialog for Regarding attributes defaults to the Account entity rather than the entity specified in the setting
  • SQL CE CommitMode.Deferred transactions do not always commit, causing duplicated tracking tokens
  • The returned DBCS display value from inline lookup create displays incorrectly
  • Two Account/Contacts field in 'Add Data Value ' while inserting/updating E-Mail Template for Opportunity
    • One of them is inserting blank value with no indicator if which one is working and which one is not
  • After adding a Connections sub-grid to an entity form in Microsoft Dynamics CRM 2013, clicking on the plus (+) button doesn't open a window to add the record
    • Additionally, users will see an 'Error on Page' status at the bottom of the browser window
  • Users in Microsoft Dynamics CRM 2013 receive "An error has occurred. Please return to the home page and try again." error dialogs when deleting more than one product at a time from an Opportunity, Sales Order, Quote, or Invoice record
  • Users of Microsoft Dynamics CRM 2013 are not able to create a parental relationship between two custom entities if the related entity has an attribute with the Image data type
  • Users of Microsoft Dynamics CRM 2013 who have configured SQL Reporting Services to run under a service account from a trusted domain will see the following errors when attempting to run a report:
    • An error has occurred during the report processing. (rsProcessingAborted) Cannot create a connection to data source 'CRM'. (rsErrorOpeningConnection) System.DirectoryServices.DirectoryServicesCOMException: There is no such object on the server
  • Unable to search the Opportunity Product by Product ID after clicking on '+' option on the inline items sub grid for Existing Product on the Opportunity form
  • Users attempting to set the state of an Appointment to Scheduled by setting the Status Reason field in Microsoft Dynamics CRM 2013 Service Pack 1 are unable to do so because they only have the Free and Tentative option values
  • When a team owns a record and that record is also shared with that same team, no user is able to remove the sharing from that record
  • Exceptions that originate from an asynchronous plugin's constructor will cause the Microsoft Dynamics CRM 2013 Async service to terminate
  • When you have custom scripting on an entity form that executes the Xrm.Page.ui.getFormType function you may receive Invalid Operand to 'in' exception either in the UI or when you debug your custom script
    • This error will occur after calling Xrm.Page.ui.getFormType only after one of the following actions is taken on the form:
      • Adding a competitor to a sub grid
      • Adding a new access team member to a sub grid
      • Removing an access team member from a sub grid
      • Adding a connection to a sub grid Updating the role on an existing connection in a sub grid
  • You receive the below error once you enter the text in any Activity, Task, or Notes after entering text with '@'  symbol in the POST's under Social Pane of any record:
    • "Access Denied. This form is no longer available. As a security precaution, Microsoft Dynamics CRM does not automatically resubmit your information for you. To continue, close and reopen the form, enter your information again, and then save the form."
    • This issue appears on all Refreshed forms which have Social Pane
  • When two entities have an N:N relationship and a new subgrid is added to one of the entity forms, it will not display the + icon
  • Cannot configure CRM mobile application due to failed metadata loading when LabelText is missing
  • If a business rule is defined on an entity with conditions that include where a field "does not contain data", when an existing record is opened and the value in that field is removed the business rule is not fired
  • Required Attendees not populated with Contact when related Appointment created from Contact

Go to Top

Support for new technologies provided by CRM 2013 Update Rollup 1 for Service Pack 1:

The Microsoft Dynamics CRM Engineering team consistently tests Microsoft Dynamics CRM 2013 against pre-release and release versions of technology stack components that Microsoft Dynamics interoperates with. When appropriate, Microsoft releases enhancements via future Microsoft Dynamics CRM 2013 Update Rollups, Service Packs, or new major version releases to assure compatibility with future releases of these products. This compatibility matrix is updated via this Microsoft Knowledge Base article: Microsoft Dynamics CRM Compatibility List. Microsoft Dynamics CRM 2013 Update Rollup 2 and Service Pack 1 provide support for:

There is no new support for new technologies provided by CRM 2013 Update Rollup 1 for Service Pack 1.

Go to Top

Hotfixes and updates that you have to enable or configure manually

Occasionally, updates released via Update Rollups require manual configuration to enable them. Microsoft Dynamics CRM Update Rollups are always cumulative; for example, Update Rollup 2 will contain all fixes previously released via Update Rollup 1 as well as fixes newly released via Update Rollup 2. So if you install Update Rollup 2 on a machine upon which you previously installed no Update Rollups, you will need to manually enable any desired fixes for Update Rollups 1-2:

  • CRM 2013 Update Rollup 1: no updates requiring manual configuration
  • CRM 2013 Update Rollup 2: no updates requiring manual configuration
  • CRM 2013 Service Pack 1: no updates requiring manual configuration, but some new features need to be enabled by a CRM Server Administrator
    • Go to Settings > Administration and then click Install Product Updates
  • CRM 2013 Update Rollup 1 for Service Pack 1: no updates requiring manual configuration

Go to Top

Microsoft Dynamics CRM compatibility with technology stack components: Internet Explorer, Windows Client and Server, Office, .NET Framework, and more

The Microsoft Dynamics CRM Engineering team consistently tests Microsoft Dynamics CRM 2013 against pre-release and release versions of technology stack components that Microsoft Dynamics interoperates with. When appropriate, Microsoft will release enhancements via future Microsoft Dynamics CRM 2013 Update Rollups, Service Packs, or new major version releases to assure compatibility with future releases of these products. This compatibility matrix is updated via this Microsoft Knowledge Base article: Microsoft Dynamics CRM Compatibility List.

Greg Nichols
Dynamics CRM Senior Premier Field Engineer
Microsoft Corporation

CRM2013SP1UR1Full.mp3


Table Bloat Due to Workflow Log Entries

$
0
0

One of the more common customer issues that has been coming up often lately is table bloat due to a large volume of completed or canceled workflow entries in the organization. There are three main tables that are impacted by this workflow history retention:

  • AsyncOperationBase
  • PrincipalObjectAccess (POA)
  • WorkflowLogBase

Let’s start with a quick background on the purpose of the POA table and why there should be concern if this table starts to grow out of control. The POA table is a SQL table within each CRM organizational database which is used to store all sharing information, mapping users and teams to objects that have been shared to them explicitly or via cascaded operations. We recommend keeping the size of this table reduced as much as possible to optimize performance of the application.

The second table of concern is the AsyncOperationBase table. This table tracks your asynchronous processing job execution (system jobs, workflows, plug-ins, etc). Similar to the POA table, as this table grows larger and contains millions of records, you will most likely start to see a performance decrease on the system.

The last table is the WorkflowLogBase table. This table stores your detailed workflow execution history, including detailed information on the execution of each step within the workflow. Again, if this table grows into the millions of records, you may start to see performance issues with the system.

Now that we’ve covered the purpose and concerns of these tables, let’s discuss the issue at hand. As mentioned previously, table bloat for these three tables is a concern. It’s probably common sense that a large number of completed workflows could directly affect the AsyncOperationBase and WorkflowLogBase tables since they’re used for storing execution and logging history of the workflows. So, why are we seeing table bloat on the POA table as well? This occurs because workflow executions result in the creation of shared access entries in the POA table for the WorkflowLog record of the owner of that workflow.  This means that every time a workflow is executed there are associated WorkflowLog records created in the POA table. Depending on the number of steps within the workflow, this could result in a high ratio of POA records being created for a single workflow execution. The more often workflows are executed, the faster all three of these tables will grow. There are ways to reduce the number of WorkflowLog entries within these tables and we’ll get into that in a bit.

How can you tell if your table bloat is due to a large number of workflow entries? Below are a few simple queries that can be executed to provide you with a record count on the tables of concern. The AsyncOperationBase table will typically have less records than the POA and WorkflowLogBase tables. Take the results of all three queries into consideration when determining if you are seeing this issue in your environment.

Disclaimer: I recommend running these queries during non-Production hours to minimize any performance impact on the system

AsyncOperationBase Query
This query will display a row count of records (operation types defined in the comments of the query below) with a status of completed or canceled and a state of completed.

/*AsyncOperationBase OperationTypes, StatusCodes and StateCodes
Operation Types:
Workflow Expansion Task = 1
Collect SQM Data = 9
PersistMatchCode = 12
FullTextCatalogIndex = 25
UpdateContractStates = 27
WorkFlow = 10

Status Codes:
Suspended, Waiting = 10
Succeeded = 30
Canceled = 32

State Codes:
Completed = 3
Suspended (Waiting) = 1

Replace "OrgName" below with your CRM organization*/

USE [OrgName_MSCRM]

GO

SELECT Name, OperationType, StatusCode, StateCode, COUNT(Name) AS TotalRecordCount
FROM AsyncOperationBase WITH(NOLOCK)
WHERE StatusCode IN (30, 32) AND OperationType IN (1, 9, 12, 25, 27, 10)
GROUP BY Name, OperationType, StatusCode, StateCode
ORDER BY TotalRecordCount DESC


POA Query
The query below will provide you with a breakdown of the total number of POA record counts per record type. This will allow you to pinpoint which record types are consuming the majority of your POA table. If the record type “WorkflowLog” contains a large number of records, then you may be experiencing the issue described above.

 /*Replace "OrgName" below with your CRM organization*/

USE [OrgName_MSCRM]

GO

WITH POAS as (SELECT ObjectTypeCode, COUNT(ObjectTypeCode) AS TotalRecordCount
FROM [dbo].[PrincipalObjectAccess] POA WITH (NOLOCK)
GROUP BY ObjectTypeCode)
SELECT MTDSE.Name, POAS.ObjectTypeCode, TotalRecordCount
FROM POAS JOIN ( SELECT [Name],[ObjectTypeCode]
FROM [MetadataSchema].[Entity]
GROUP BY [Name], [ObjectTypeCode] ) MTDSE ON MTDSE.ObjectTypeCode = POAS.ObjectTypeCode
ORDER BY POAS.TotalRecordCount DESC


WorkflowLogBase Query
This query will return the total number of records in the WorkflowLogBase table with a status of Completed, Canceled or Waiting. 

/*WorkflowLogBase Status codes: 
Status 1 = In Progress
Status 2 = Succeeded
Status 3 = Failed
Status 4 = Canceled
Status 5 = Waiting

Replace "OrgName" below with your CRM organization*/

USE [OrgName_MSCRM]
GO

SELECT wflb.Status, COUNT(wflb.Status) AS TotalRecordCount
FROM WorkflowLogBase wflb WITH(NOLOCK)
WHERE Status IN (2,4,5)
GROUP BY wflb.Status
ORDER BY TotalRecordCount DESC

 

Resolution

There are a couple different ways to remediate this issue. Listed below are separate remediation options based on whether or not your company has business requirements for retaining a history of the workflow execution history.

Option 1 - Purge all successfully completed and canceled workflow history

If you have no business requirements for keeping a history of the successfully completed and canceled workflows, consider using the remediation steps below:

1.     Enable the Automatically delete completed workflow jobs (to save disk space) option located in the WorkFlow properties>Administration tab>Workflow Job Retention section:

 

Note: You would need to do this for all workflows in the organization

2.     Purge all workflow history for successfully completed and canceled workflows using one of the options outlined below:

    1.   Supported SQL script
           1.     Execute the script found in the KB article below:
                   Performance is slow if the AsyncOperationBase table becomes too large in 
                   Microsoft Dynamics CRM
                  
      KB968250 - http://support.microsoft.com/kb/968520
                  
                   
      Note: This script has been updated to include purging of the associated
                   POA records, no longer requiring separate execution of the script found
                   in KB266415.

    2. Bulk delete job within CRM (may take longer)
           1.     Create a bulk delete job with search criteria like the example below:
                  

 Option 2 – Retain workflow history

If you have business requirements around keeping a history of the successfully completed and canceled workflows, it is still highly recommended to determine what that retention period is and purge any completed and canceled workflows older than that timeframe. Keeping an indefinite amount of workflow history will cause these tables to continue to grow out of control slowing down performance. Review the remediation steps below:

1.     Create a scheduled Bulk Delete job to run during non-Production hours with the action of purging successfully completed and canceled workflow jobs older than a specific timeframe (no more than 1 month is recommended). Below is an example of search criteria to use for this type of job:

Note: If you’d like to first determine the number of records that would be purged based on a specific timeframe, you can use the three queries listed above and add a WHERE clause for the CompletedOn and/or ModifiedOn columns. See example below.

--WHERE clause to display only results with CompletedOn and ModifiedOn older than 30 days 
WHERE CompletedOn <= dateadd(day,-30,getdate())
AND ModifiedOn <= dateadd(day,-30,getdate())

 

Additional methods for controlling POA table bloat by modifying security configuration, shared privilege proliferation and unnecessary cascaded behaviors can be found below.

Additional POA Performance Recommendations
http://blogs.msdn.com/b/crminthefield/archive/2011/06/09/principalobjectaccess-performance-recommendations.aspx

CRM 2011 Scalable Security Modeling
http://www.microsoft.com/en-us/download/details.aspx?id=39095

CRM 2013 Scalable Security Modeling
http://www.microsoft.com/en-us/download/details.aspx?id=40861

 

Hope this guide helps you alleviate some of the table growth you're seeing in your environment.

Thanks!
Reed Wolfe
Premier Field Engineer

Creating SSL Certificates for CRM 2013 Test Environment

$
0
0

A while back I posted a blog on creating SSL certificates in Server 2008 for a CRM 2011 environment. I had requests on how to do this for CRM 2013 in a Windows Server 2012 environment.

When working on a CRM Test environment there are many scenarios where I need to add SSL to the CRM web site such as testing Claims Authentication. Instead of getting a certificate from a 3rd party certification authority I will just use IIS to generate my own certificates. This allows me to quickly create certificates for my testing that will valid on other test machines. Below are the steps to configure the Active Directory Certificate Service so that you can easily test SSL in your CRM environment. I will also include steps on how to install the root certification on other machine so that the certificates are valid for test clients.

Install Active Directory Certificate Services Role

Before a certificate can be created for CRM the Active Directory Certificate Services Role must be installed on the IIS Server. In these steps I am installing the role directly on the CRM Server.

a. Open Server Manager and select Add Roles and Features.

image

b. Within Server Manager Click on Roles – Add Roles.

image

c. Select the CRM server that you’d like to create the SSL certificates on and click Next.

image

d. Select the “Active Directory Certificate Services” Role and Click Next twice to get to the Roles Services window.

image

e. A new window will open with other required features. Click Add Features.

image

f. Leave the default features that are chosen and Click Next.

image

g. Choose Certificate Authority from Role Services and Click Next.

image

h. Click Install on the Confirmation window.

image

i. Click Close on the installation window and the install will complete in the background.

image

 

Configure Active Directory Certificate Services

a. Once the install is complete an alert will show in Server Manager stating Configuration required for Active Directory Certificate Services. Click More to start the configuration.

image

b. Click on the Post-deployment configuration Task to launch the AD CS configuration wizard.

image

c. Click Next past credentials screen unless your account doesn’t hold the necessary rights.

image

d. Click Next past Role Services Screen.

image

e. Select Enterprise CA and Click Next.

image

f. Choose Root CA and Click Next.

image

g. Select Create a new private key and Click Next.

image

h. Leave defaults on the cryptographic options and Click Next.

image

i. Click Next on the CA Name screen.

image

j. Click Next on the Validity Period screen.

image

k. Click Next past the Certificate Database screen.

image

l. Click Configure on the Confirmation screen.

image

m. Click Close on the Results screen to conclude the AD CS configuration.

image

 

Create the Domain SSL Certificate

Now that the Active Directory Certificate Services role is installed you can generate a domain certificate for the CRM website. These steps show how to generate a wildcard certificate for the awc.local test domain that I am using. This wildcard certificate will then work with the various test orgs on this environment.

a. Open IIS Manager on the CRM Server that the Active Directory Certificate Services role was installed.

b. Open Server Certificates from the IIS Manager Home Page.

image

c. Click Create Domain Certificate with in the Server Certificates window.

image

d. Enter the Certificate Properties. Common name is for the name of the certificate. Since I am creating a wildcard I will enter *.awc2013.local for the Common name. Once all data is populated, Click Next.

image

e. Select the Online Certification Authority. The Certification Authority that was created should be displayed when you choose the Select button. Enter a Friendly name to identify the certificate and click Finish.

image

f. The new certificate will show up in the Server Certificates list.

image

Add SSL Certificate to the CRM Website

Now that the certificate is created a SSL binding can be created for the CRM Web Site. Since this will be the only SSL site within IIS we will use the default port 443.

a. Open IIS Manager on the CRM Server.

b. Navigate to Microsoft Dynamics CRM from the list of Web Sites and Click Bindings within Actions on the upper right side of the window.

image

c. Click Add on the Site Bindings Window.

image

d. Select HTTPS from the Type drop down menu and then Select the Wildcard certificate from the SSL Certificate menu, Click OK and Close.

image

At this point the certificate is bound to the CRM website and you can open CRM to test the new SSL binding. Open a browser and enter the CRM URL. In this case I will enter the Fully Qualified Domain Name (FQDN) for my server (https://crmsql2013.awc2013.local/CRM). If you are using an alias you will need to create the necessary entries in DNS. CRM should open properly with the SSL URL. The SSL certificate will show up as valid. When clicking on the certificate information I can see the wildcard cert that was issued by my server.

image

 

Install CA Root Certificate on Test Client Machine

This binding will work from other test machines, but will initially be prompted because the CA Root Certificate is not trusted. image

image

The following steps will show how to install the CA root certificate so that it’s trusted and the CRM site opens without any prompts. Opening CRM without any prompts will be needed to successfully test SSL for components on other machines such as the Outlook Client or Email Router.

a. First we need to export the CA Root Certificate.

i. Open CRM using the SSL URL on the Server that the certificate is working properly.

ii. Click on the SSL Icon and choose View certificates.

image

iii. Click the Certification Path on the Certificate window. Select the Root Certificate tab and Click View Certificate.

image

iv. Click the Details Tab for the Root Certificate and Click Copy to File. This will allow you to export the root certificate so that it can be copied and installed on another machine.

image

v. On the Certificate Export Wizard, Click Next.

image

vi. Select Cryptographic Message Syntax Standard – PKCS #7 Certificates (.P7B), Click Next.

image

vii. Specify a name/location to save the exported certificate, Click Next.

image

viii. Click Finish to complete the export of the Root Certificate. The certificate is now ready to install on other machines.

image

b. The following steps explain how to install the root certificate on another machine.

i. Copy the certificate file to the test machine that was receiving the certificate error. Right click on the certificate and choose Install Certificate.

clip_image054

ii. Click Next on the Certificate Import Wizard.

image

iii. Select Place all certificates in the following store and Click Browse.

image

iv. Select the Trusted Root Certification Authorities Store and Click OK.

image

v. Click Next and Finish on the Import Wizard.

image

vi. Click Yes on the Security Warning asking if you want to install the certificate.

image

vii. Click OK on the prompt stating that the Import was successful.

image

Open the CRM website using the SSL address and now the site should open without any certificate warnings.

image

Hopefully this will help out if you ever need to test SSL for your environment without obtaining a 3rd party certificate.

Thanks!

Jeremy Morlock

Microsoft Premier Field Engineer

Dynamics CRM Outlook Client Performance Troubleshooting and Optimizations Guide

$
0
0

Another cross-post from the blog of Ritesh Ranjan.  Enjoy!

----------------------------------

In my 5+ years of Dynamics CRM career, I have worked on various issues/scenarios, and, the most common, according to me, is the Dynamics CRM Outlook Client Performance. In this blog post, I would like to delve deep into this subject and share some crucial information to isolate and troubleshoot this scenario. My endeavor is to include almost every aspect which would not only help you isolate and understand the issue, but also help you optimize the overall performance of the Dynamics CRM Outlook Client. This blog post will also contain a few points from the Performance Optimization white paper along with additional aspects which can certainly play a good role in improving the overall performance.

To begin with, let me first focus on the importance of understanding the root cause of any issue which could be found after proper isolation or funneling down.

Isolating Outlook performance issues:

  • What is the update rollup installed for CRM outlook clients?
  • What do we mean by performance issues? Are we talking about overall outlook performance or anything in specific?
  • Have we defined any performance benchmark? If not, it’s not too late.
  • What exactly happens when you notice the performance issue? A complete understanding of the issue with proper description.
  • Do we get any errors or just the outlook becomes sluggish?
  • How many concurrent users are accessing CRM at the same time when the issue happens?
  • Does this issue happen with all the users at the same time or is it random?
  • Does this happen with a specific entity within CRM? If yes, let’s drill down on that entity first.
  • Are we talking about performance issues as soon as we launch the outlook client or does it happen all across the time during its use?
  • How is the performance of the CRM Server at the same time when this issue happens?
  • How is the overall performance of Dynamics CRM over web client?
  • Does faulty users have multiple mailboxes configured on their outlook?
  • What is the service pack level for outlook?

Note: It is always better to have the latest service packs and update rollups installed with proper testings in your Dev./UAT/Test environment.

Server Side Optimization validations:

  • What is the CRMAppPool recycle interval set to?
  • Is there any batch process or multiple Async jobs running on the CRM Server from the time the issue happens?
  • Are we noticing any memory leaks happening on the server as well as on the client machine? I mean 'is the process using more than normal amounts of memory, ever increasing amount of memory, or a very disproportionate amount of memory compared to other processes'
  • Do we have HTTP compression enabled on the CRM Server under IIS? For more information you can refer to: http://blogs.msdn.com/b/crminthefield/archive/2011/12/29/enable-wcf-compression-to-improve-crm-2011-network-performance.aspx
  • What is the version of exchange we are using? Is this hosted or On Premise? If this is hosted or On-Premise, how is the overall performance? Did we isolate it?
  • How is our network bandwidth? Have you referred this: http://blogs.msdn.com/b/crminthefield/archive/2011/07/20/crm-outlook-client-network-bandwidth-concerns.aspx
  • Are we running any quick campaigns or marketing activities at the time when the issue happens? Can you stop it and then check the behavior?
  • What is the type of antivirus installed in your environment? What is the behavior when you disable the antivirus completely and then check the behavior?
  • Have we optimized the Performance of Internet Information Services? Optimizing the performance of Microsoft Internet Information Services (IIS) within a Microsoft Dynamics CRM 2011 implementation benefits not only the overall system, but also any custom applications, plug-ins, or add-ins that have been developed by using the Microsoft Dynamics CRM 2011 SDK.
  • Have we optimized the Performance of Integrated Windows Authentication and Kerberos Authentication
    • Ensuring Kerberos is enabled at the client and the server can enhance performance by reducing the number of round trips required for authentication. When using Kerberos, the client can send authentication details with the initial response rather than having to go through multiple challenges and responses, which would otherwise be required. As a result, maintaining credentials across sessions can provide better performance, particularly on higher latency networks. While Kerberos generally should “just work,” here are some scenarios or issues you may encounter.
    • In Internet Explorer, ensure that “Enable Integrated Windows Authentication” is set to enable use of Kerberos for integrated authentication. The client will not attempt Kerberos authentication unless this setting is enabled.
    • To determine whether users are connecting via Kerberos, in the registry, enable Kerberos logging. If necessary, to help diagnose whether the user can obtain and use a Kerberos ticket, use applications such as Kerbtray, which is available from Microsoft Downloads.
  • Did we verify Kernel mode authentication on the Server?
    • Kernel Mode Authentication allows authentication persistence when switching the request from one application pool to another application pool. It re-authenticates only once for the first time when the request is made to that application. For rest, all requests Kernel mode authentication (KA) session is maintained, which is a huge performance gain!

Client Side Optimization validations:

  • What is the behavior when you disable all the outlook add-ins except the Dynamics CRM add-in and then check the behavior?
  • Is CRM server URL added under trusted site?
  • What is the behavior of outlook client with a vanilla organization? Can we test the behavior against a different organization, most preferably a vanilla organization? This test really helps in isolating if the issue is with any specific organization.
  • Are we using outlook client for sending/receiving emails in CRM? If yes, how many email flow happens on a daily basis?
  • What is the size of the mailbox? 1.5 GB is optimal for better performance.
  • How many mailboxes are configured for the affected user/users?
    Have you looked at the Antivirus exclusions? For more information you can also refer: http://community.dynamics.com/crm/b/crminthefield/archive/2011/01/24/anti-virus-exclusions-for-microsoft-dynamics-crm.aspx#.Uh3m52b8Kpo
  • Do you have script scans running? If yes, did you try disabling it and then check the behavior?
  • Are we using the latest IE version? Latest IE versions bring better JS processing engine.
  • Can we have a 64 bit environment?

Let’s verify the following for an overall better experience:

  • Less fields on the form (if business rules allow) 
  • Use server-side show/hide fields
  • Reduce the number of controls
  • Reduce the number of Web Resources in the form
  • Leave web resources in a tab and collapse the tab
  • Hide fields/sections/tabs by default and show on condition
  • Use collapsed sections (if the section is collapsed then the iFrames or web resources inside are not loaded until the section is opened.  For Web Resources there is a Client API “OnTabChange”, capture it to know when the section is being expanded or collapsed to initialize, etc, avoiding scripts in onload)
  • Scripts on the form have an impact.  Reduce OnLoad scripts when it can be avoided. Avoid complex code. Prefer OnChange since it’s on demand
  • Trim the ribbon appropriately for the form. Actions/Commands on the form should match the business need. Update display roles to trim the ribbon from the server side (preferred).
  • Use Read Optimized forms
  • Pick associated grid over sub-grids
  • Optimization In Grid
    • Customize grids (i.e. if a field is missing) add it so that a Form doesn’t need to  be opened
    • Enable actions in the grid
    • Pick the columns most meaningful
    • Ensure you have the right filters
  • Sorting will affect the performance. Pick the sort column when defining the view.  Try to use a primary attribute, don’t use a lookup
    • Prefer “Recently Viewed” over searching in the grid
    • Configure the number of records returned
    • Minimize bytes over the network

Apart from the above steps, I would also encourage referring the following:

Performance Optimization for Dynamics CRM 2011 Clients: http://blogs.technet.com/b/dynamicspts/archive/2013/08/20/performance-optimization-for-dynamics-crm-2011-clients.aspx

Optimizing and Maintaining Client Performance for Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online to make sure all the basic configuration is in place? For more information http://technet.microsoft.com/en-us/library/hh204512.aspx

Slow performance when you use the Microsoft Dynamics CRM 2011 client for Outlook: http://support.microsoft.com/kb/2585157

Use JavaScript with Microsoft Dynamics CRM (best practices towards the bottom): http://msdn.microsoft.com/en-us/library/hh771584.aspx

Best Practices for Developing with Microsoft Dynamics CRM: http://msdn.microsoft.com/en-us/library/gg509027.aspx

Optimizing and Maintaining Client Performance for Microsoft Dynamics CRM 2011 and CRM Online: http://www.microsoft.com/en-us/download/details.aspx?id=23261

Optimizing and Maintaining the Performance of a Microsoft Dynamics CRM 2011 Server Infrastructure: http://www.microsoft.com/en-us/download/details.aspx?id=27139

 

Let me know if you have any questions or anything to share on the above discussed issue/scenario.

Regards,

Ritesh Ranjan – Microsoft Dynamics CRM Premier Field Engineer (EMEA – Norway)

Static Content not cached properly in Dynamics CRM due to Vary:* header

$
0
0

Recently I have worked on a few different performance cases where the customer was either seeing slow form load performance or noticed high bandwidth usage. To see what was happening I gathered a fiddler trace and looked at the traffic. When gathering a fiddler trace I always open the form twice in a row to make sure static content has a chance to get cached. On any subsequent page loads we should only see dynamic pages being loaded. This would include aspx, asmx, ashx, and svc type of requests. However in this scenario I would see large JavaScript files being loaded each time I open the form.

I have a couple screenshots below showing the common offenders. These static files can account for nearly 1MB of extra data being downloaded with each form load. On a slower network connection it can add several seconds to the page load. 

clip_image002[5]

image

These static files all have caching set to public however the Vary header in the response was being set to “*”. Anytime the Vary header is set to * it will prevent the client from caching the file.  The Vary header should be set to “Accept-Encoding”.  I have found a couple different culprits that cause this issue.

Issue 1: IIS is setting the Vary header to “*”.

In some cases IIS can set the Vary header to “*” instead of “Accept-Encoding”. I have primarily noticed this behavior on Windows Server 2012.  This can be easily prevented by changing the omitVaryStar IIS setting to True.   There are quite a few articles that can provide more detail on the omitVaryStar  setting, but this is something to look at if you are seeing the behavior.

Below are steps on how to change this setting

1. Select CRM site, and go to Configuration Editor.

clip_image002

2. Select system.web/caching/outputCache as Section, set True for omitVaryStar, click Apply to save the change.

clip_image004

This results in the Vary header in the response going back to “Accept-Encoding” and the browser is able to cache the static content properly.

 

Issue 2: Caching Features on Network Appliances adding Vary:* header.

There have been some scenarios where I’ve found that the Vary header was being impacted by network appliances.  In those cases the network appliances had their own caching or compression functionality which caused the Vary * header to be added. I’ve seen this behavior caused by Load Balancers, Firewalls, and Proxy Servers. These can be a little harder to track down, but in some cases you can access a server directly using IP or server name to see if the issue is still occurring. Once the source was identified the customer would either update the appliance configuration or disable the appliance caching functionality because it did not add noticeable benefit over what IIS was doing.

There may be other things that cause this behavior, but these are the two common things that I run into.  Feel free to drop a comment if you have seen other root causes to the behavior.

Thanks,

Jeremy Morlock

Microsoft Premier Field Engineer

Time Format Changes in CRM Online Maintenance Emails

$
0
0

CRM Online admins, recently you may have noticed the time format of the CRM Online Service Update emails have changed.  Our communications team will be documenting all updates times, specifically in emails, in UTC times to help avoid possible confusion with any offsets.  That said, if you want to see all times/dates in the local time of your device, you can access the Office 365 portal and times will appear in local time (for example: https://portal.office.com/default.aspx#ScheduledMaintenancePage will show your Upcoming Maintenance).

For email communications, the date/time format used previously included an offset for local time:

Before: 21 October 2014 18:00 UTC-05:00 - 23 October 2014 06:00 UTC-05:00

The date/time format for email communications used today and going forward will have no offset and communicated in UTC date/time:

New: 21 October 2014 22:00+00:00 – 23 October 2014 11:00 +00:00

Recently, I’ve heard some customers ask “Why did this change and what does +0 mean?” – the +00:00 indicates UTC time and denotes no adjustment from UTC.  Now, if you’re like me, your brain is wired to think in local time and it was easier for me to figure out the time before.  However, since the dates/times were based on the company location and because these notices go out to all O365 Global Admins, having the date / time in UTC will clear up any confusion as admins can be located across timezones. 

So, now, the question: how can you easily figure out what this is in local time?  The first and easiest way to see the date in local time is to use the Office 365 Portal, that will show the time based on the timezone of your device (it gets this information from the browser) – the URL is: https://portal.office.com/default.aspx#ScheduledMaintenancePage

And, for those who want to do the conversion themselves?  We can use PowerShell, there are a ton of different methods to convert to UTC including search engines, websites, tables, and others –  but since Jeffrey Snover and others have worked so hard to put PowerShell on all the current versions of Windows we can use it nearly everywhere – and PowerShell’s capabilities far surpass the old staple cmd.exe making tasks like this very easy.  Now to the scripting:

In this scenario you receive an email with the dates: 21 October 2014 22:00 +00:00 – 23 October 2014 11:00 +00:00 – to take these dates and times and to get the local time, just pass each date/time into the Get-Date cmdlet and it will return the local time based on your computers time zone.  Open PowerShell and type in the following command:

PS C:\> (Get-Date "21 October 2014 11:00 +00:00")

image

Now, if you’re wanting more options, take a peek at a few Get-Date tips on TechNet: http://technet.microsoft.com/en-us/library/ee692801.aspx AND don’t forget to check out Ed’s Scripting Guy blog that has all kinds of Get-Date examples: https://social.technet.microsoft.com/Search/en-US?query=Get-Date&rn=Hey,%20Scripting%20Guy!%20Blog&rq=site:blogs.technet.com/b/heyscriptingguy/&beta=0&ac=4

Hopefully this article helped clarify the formatting change and gave you a simple option to do the time zone conversions, it also should have given you a more involved way to convert using PowerShell :). As always, we appreciate you taking the time to read and let us know if you have any questions – thanks!

Sean McNellis

Sr. Premier Field Engineer
Microsoft Dynamics CRM

Microsoft Dynamics CRM 2015 White Papers & Technical Documentation

$
0
0

Updated: 6/18/2015

The CRM 2013 White Paper & Technical Documentation blog post that I wrote with all the links to the white papers was very popular, so I am doing a similar post for CRM 2015.

I am often finding myself searching for CRM 2015 White Papers & Technical Documentation URL’s to reference or send to customers and while Bing works well to find these individually, I thought it would be nice to just try include them all in a single URL for easy reference.  There are some other good blogs out there with similar lists, but I can’t update those, so I wanted my own list.  This list is quite small at this point with the recent CRM 2015 release, but this will continue to grow over the next couple months and I will update this blog quarterly.

Enjoy!

Shawn Dieken

Follow the conversation:
@sdieken
@pfedynamics | http://www.pfedynamics.com

 

Titles Date Published

Deploying and administering Microsoft Dynamics CRM Online and Microsoft Dynamics CRM 2015 (FKA: CRM Implementation Guide) (Download)
Deploying and administering Microsoft Dynamics CRM Online and Microsoft Dynamics CRM 2015 (FKA: CRM Implementation Guide) (Online)

(Updated Quarterly)
Microsoft Dynamics CRM 2015 Software Development Kit (SDK) (Download)
Microsoft Dynamics CRM 2015 Software Development Kit (SDK) (Online)
(Updated Quarterly)
Configuring Claims-based Authentication for Microsoft Dynamics CRM Server Updated: 6/15/2015
Active Directory from on-premises to the cloud – Azure AD whitepapers 6/15/2015
Microsoft creates a new sales experience with Microsoft Dynamics CRM at the core 6/12/2015
Microsoft Dynamics CRM Online Migration to Microsoft Dynamics CRM on-premises 6/11/2015
Deployment and Operational Guidance for Hosting Microsoft Dynamics CRM (CRM SPLA Guide) 6/10/2015
Unified Service Desk for Microsoft Dynamics CRM 5/19/2015
Microsoft IT Improves Sales Productivity by Integrating Disparate Sales Applications 5/8/2015
Microsoft IT Streamlines Disparate Sales Data into an Easy-to-Use Windows 8.1 Experience 5/8/2015
Microsoft Dynamics CRM Services and Support Documents 5/6/2015
Microsoft Dynamics CRM 2015 Performance and Scalability Documentation 5/5/2015
Microsoft Dynamics Marketing 2015 Update Software Development Kit (SDK) Updated: 5/1/2015
Microsoft Dynamics Marketing 2015 - Resources for download Updated: 5/1/2015
Microsoft Dynamics CRM Online deployment, administration, and migration documentation 4/29/2015
Azure Active Directory Solutions Architecture White Paper 3/4/2015
Microsoft Dynamics CRM 2015 On-Premises Licensing and Pricing Guide 3/2/2015
Training & Adoption Kit for Microsoft Dynamics CRM and Microsoft Social Listening 2/12/2015

Microsoft Dynamics CRM 2015 White Papers & Technical Documentation

$
0
0

Updated: 6/18/2015

The CRM 2013 White Paper & Technical Documentation blog post that I wrote with all the links to the white papers was very popular, so I am doing a similar post for CRM 2015.

I am often finding myself searching for CRM 2015 White Papers & Technical Documentation URL’s to reference or send to customers and while Bing works well to find these individually, I thought it would be nice to just try include them all in a single URL for easy reference.  There are some other good blogs out there with similar lists, but I can’t update those, so I wanted my own list.  This list is quite small at this point with the recent CRM 2015 release, but this will continue to grow over the next couple months and I will update this blog quarterly.

Enjoy!

Shawn Dieken

Follow the conversation:
@sdieken
@pfedynamics | http://www.pfedynamics.com

 

Titles Date Published
Deploying and administering Microsoft Dynamics CRM Online and Microsoft Dynamics CRM 2015 (FKA: CRM Implementation Guide) (Download)
Deploying and administering Microsoft Dynamics CRM Online and Microsoft Dynamics CRM 2015 (FKA: CRM Implementation Guide) (Online)
(Updated Quarterly)
Microsoft Dynamics CRM 2015 Software Development Kit (SDK) (Download)
Microsoft Dynamics CRM 2015 Software Development Kit (SDK) (Online)
(Updated Quarterly)
Configuring Claims-based Authentication for Microsoft Dynamics CRM Server Updated: 6/15/2015
Active Directory from on-premises to the cloud – Azure AD whitepapers 6/15/2015
Microsoft creates a new sales experience with Microsoft Dynamics CRM at the core 6/12/2015
Microsoft Dynamics CRM Online Migration to Microsoft Dynamics CRM on-premises 6/11/2015
Deployment and Operational Guidance for Hosting Microsoft Dynamics CRM (CRM SPLA Guide) 6/10/2015
Unified Service Desk for Microsoft Dynamics CRM 5/19/2015
Microsoft IT Improves Sales Productivity by Integrating Disparate Sales Applications 5/8/2015
Microsoft IT Streamlines Disparate Sales Data into an Easy-to-Use Windows 8.1 Experience 5/8/2015
Microsoft Dynamics CRM Services and Support Documents 5/6/2015
Microsoft Dynamics CRM 2015 Performance and Scalability Documentation 5/5/2015
Microsoft Dynamics Marketing 2015 Update Software Development Kit (SDK) Updated: 5/1/2015
Microsoft Dynamics Marketing 2015 - Resources for download Updated: 5/1/2015
Microsoft Dynamics CRM Online deployment, administration, and migration documentation 4/29/2015
Azure Active Directory Solutions Architecture White Paper 3/4/2015
Microsoft Dynamics CRM 2015 On-Premises Licensing and Pricing Guide 3/2/2015
Training & Adoption Kit for Microsoft Dynamics CRM and Microsoft Social Listening 2/12/2015

Dynamics CRM Developers: Build Your Own Mobile Apps for Windows, iOS, and Android

$
0
0

Mobile first, cloud first

We all understand the importance of mobile and cloud strategy and that is why the Microsoft Dynamics CRM development team have released native mobile applications to accommodate all the major mobile platforms today – Windows Store, Windows Phone, Android, iOS, Office Outlook on Windows, and we have CRM Mobile Express for other platforms. However, it is also true that how each customer CRM usage varies depending on industry, work style, and other factors. Being a user of mobile apps ourselves, we know that many successful mobile apps enable specific tasks centered around the user and what they are looking to accomplish. 

For some organizations a successful app may be a simple approval app allowing a user to easily view, annotate, approve, or reject records and for others it could be a more integrated solution using location and other sensors to create and augment data in the field – or a company may want both experiences based on the role of the user.  While the existing Dynamics CRM mobile apps usually work very well for many general CRM purposes your company may need more – for that 3rd parties have CRM mobile applications meeting specific demands but what if you want need to build your own applications to meet specific requirements like the ones mentioned above?  If you’ve asked yourself this question or are curious as to how you can enable new ways to engage your Dynamics CRM users then please read on!  Below we’ll outline some challenges and decision points and we will also show you a new way to help developers build mobile apps for Dynamics CRM.

Development Methods

This is the most exciting time for developers as there are so many choices out there how to develop an application. C# or any .NET Framework languages with Visual Studio? Sure! (and that’s my favorite). HTML5/CSS for Windows Universal App? Of course. Xcode and Objective-C for iOS? or Java and Android Studio for Android OS? Why not! When you see cross platform development, you still have many choices like Xamarin, Cordova, etc – and new ones are coming out all the times it seems. 

Dynamics CRM: SOAP vs. REST endpoint

In addition to selecting programming languages, IDEs and platforms, there are several technology choices to build an application targeting Microsoft Dynamics CRM. A fully featured SOAP (or also referred to as web) endpoint or the lightweight and easy to develop REST endpoint. Most who have developed in Dynamics CRM understand the REST endpoint has some limitations in which only supports CRUD operations though we do have ways to enable Execute actions with some clever configuration and programming (we can cover that in a future blog post). While the REST endpoing covers most of the common operations, you still need Execute method for several operations like “Send” emails, “Book” appointments or “SetState records. Even “Assign” records to other users.

Direct service connection vs. host middleware service

When you build a mobile application, you can write a code to directly consume Microsoft Dynamics CRM Web services, or you can let middleware services to consume CRM web services and your mobile application consumes the middleware services. Microsoft Azure Mobile Service is one of the popular choice, as you can use C# to write business logic, then use Authentication or offline capability which Azure Mobile Service offers without writing your own code.

 

A Solution: Introducing Mobile Development Helper Code for Dynamics CRM

I hear developers won’t consume SOAP endpoint directly, because there was no library for such purpose and constructing and parsing SOAP request/response is not the most enjoyable task for developers. We have good news for developers, the Dynamics CRM SDK content publishing team released a library called “Mobile Development Helper Code for Dynamics CRM”, which you can directly use in your mobile solution to consume SOAP endpoint just like normal Dynamics CRM SDK. You can also use “CRM Service Utility for Mobile Development” for early bound development. Please refer to the library page for overview. 

 

How to use the library

What we will cover in this post:

The easiest way to try the library is to use it in existing SDK sample app, the sample already has a basic setup for obtaining an AccessToken. However, I will explain step by step here how to use the library for you. Following are prerequisites.

- Visual Studio 2013 installed on Windows 8.1+
- Microsoft Dynamics CRM Online instance. (You are able to use trial version)
- Windows Azure Subscription (You are able to use trial version)
- Download the library from here, and extract it.

Create a Visual Studio solution

1. Open Visual Studio 2013.
2. Click FILE | New | Project
image
3. Select Visual C# | Windows Apps | Blank App
*In this example, I use Windows Store app template, but you can use Windows Phone or Universal template if you need to.
4. Give any name. I name it “Sample CRM Mobile App”

Add ADAL NuGet Packages

The easiest way to obtain AccessToken for OAuth2 from Azure AD is to use ADAL (Azure AD Authentication Library). If you have preferred way to obtain AccessToken, you can use your own way – in fact we’d love to hear how you’re doing this today.

1. In Visual Studio, Right click the project folder in Solution Explorer pane, and click  the Manage NuGet Package menu item. 
2. In the manage package window, Select Online from left pane, and type ADAL in the search box and press Search.
3. Selected Active Directory Authentication Library from the results and click Install.
image
4. Complete the installation, then click Close.

Add the Mobile Helper Library

1. Right click the solution folder in the Solution Explorer pane, and click Add | Existing Project.
2. Browser to the mobile helper folder which can be downloaded and extracted from here: https://code.msdn.microsoft.com/Mobile-Development-Helper-3213e2e6.
3. Select Microsoft.Crm.Sdk.Mobile.csproj file, and click Open.
4. In the Solution Explorer pane, under your new project (not the mobile helper), right click References | Add Reference.
5. In the add reference dialog, select Solution | Project | and select Microsoft.Crm.Sdk.Mobile and click OK.
image

Add Json.NET NuGet Packages

Both your project and mobile helper project requires Json.NET.

1. Right click solution folder in the Solution Explorer pane, and click Manage NuGet Packages for Solution menu. 
2. Select Online from left pane, and type Json.net for search box and search.
3. Selected Json.NET from the result and click Install.
image
4. Complete the installation by check all projects.
5. Click Close when install completes.

Add code to acquire AccessToken from Azure AD

1. Open MainPage.xam.cs file.
2. Replace inside MainPage class with following code.

const string aadInstance = "https://login.windows.net/{0}";
const string tenant = "[Enter tenant name, e.g. contoso.onmicrosoft.com]";
const string clientId = "[Enter client ID as obtained from Azure Portal, e.g. 82692da5-a86f-44c9-9d53-2f88d52b478b]";

static string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
private AuthenticationContext authContext = null;
private Uri redirectURI = WebAuthenticationBroker.GetCurrentApplicationCallbackUri();
private string ResourceId = "[Your CRM Online Org Address. e.g. https://contoso.crm.dynamics.com]";

public MainPage()
{
    this.InitializeComponent();
    GetAccessToken();
}

private async void GetAccessToken()
{
    authContext = new AuthenticationContext(authority);
    // Use ADAL to get an access token.
    AuthenticationResult result = await authContext.AcquireTokenAsync(ResourceId, clientId, redirectURI);

    if (result.Status == AuthenticationStatus.Success)
    {
        var AccessToken = result.AccessToken;
    }
}

3. Update tenant and ResouceId to match to your environment.

Register your app to Azure AD

You need to register your application to Azure AD.

1. First of all, obtain RedirectUri value which you use to register your application, Run the existing application by setting breakpoint after getting redirectURI.
image
2. Note the redirectURI value and stop debugging.
3. Go to Microsoft Azure portal page. (http://manage.windowsazure.com)
4. Select Active Directory on the left pane.
image
5. Click APPLICATIONS menu on the top, then click ADD button in the bottom.
6. Select “Add an application my organization is developing.
7. Enter any name and select NATIVE CLIENT APPLICATION.
8. Enter RedirectUri you just obtained.
9. Once registration completed, click CONFIGURE menu.
10. Note a CLIENT ID, which you will update the code by it.
11. Navigate to bottom to setup impersonation.
12. Select “Dynamics CRM” from Select application dropdown, and select “Access CRM Online as organization users.”
13. Click Save button.
14. Go back to Visual Studio 2013, then update clientid const string.

Run the app to obtain AccessToken

1. Set breakpoint at line 51 where you obtain AccessToken from result. Run the app. You will see Sign In page soon.
2. Enter username and password by which you can connect to CRM Online.
3. You will see consent screen only if you register your app in Azure Ad for separate instance. In such case, please OK to accept it.
4. Breakpoint will be hit and you can confirm AccessToken is retrieved successfully.
image

Update the code

Finally use mobile helper library to issue SOAP request.

1. Add following as main class member.
private OrganizationDataWebServiceProxy proxy;
2. To resolve the above code, add following at using section.
using Microsoft.Xrm.Sdk.Samples;
3. Add following code at constructor to initialize proxy.
image
4. Assign proxy.AccessToken after obtaining an AccessToken, then call ExecuteWhoAmI method, which you implement next.
image
5. Add ExecuteWhoAmI method as below.
image
6. Add necessary using statement to resolve names.

Try it out

1. Set break point right after Execute method above.
2. Run the application.
3. When the application breaks into break point, confirm the returned value.
image

What’s Next?

I hope you get the idea how to use the library to consume SOAP endpoint. The next step is to use CrmSvcUtil.exe to generate file for Early Bound development. I will explain how to use the tool next time.

Ken
Premier Mission Critical/Premier Field Engineer 
Microsoft Japan

The Dangers of Guid.NewGuid();

$
0
0

Microsoft Dynamics CRM uses GUIDs as their primary key for the entity’s SQL table.  Using GUIDs as a primary key is usually not the best item due the random sequence of numbers and letters.  The Dynamics platform has an algorithm that generates GUIDs in sequential order.  This special GUID enables the SQL Server to index the entity table more efficiently, so that records can be retrieved more quickly.

The Microsoft Dynamics CRM SDK Best practices for developing with Microsoft Dynamics CRM, states, Allow the system to automatically assign the GUID (Id) for you instead of manually creating it yourself. This suggestion allows Microsoft Dynamics CRM to take advantage of sequential GUIDs, which provide better SQL performance. The following sample code shows how to call the Create method to obtain a system-assigned GUID.

I have seen a number of times where a customer has created a plugin or an application that needs to create records in CRM using the SDK and they populate the record’s ID with GUID generated using with System.Guid’s NewGuid method.  The System.Guid’s GUID does not generate a sequential GUID that conforms  to the CRM platform’s GUID pattern.

AccountIDs

As you can see, the AccountID in rows 15 through 23 are generated by the platform and 24 through 34 are generated using the NewGuid method.

If you have to create records programmatically you should always let the platform create the record an ID and if you need to use the ID later, create a variable ready to assign the ID to.

Guid newAccount;

using (OrganizationServiceProxy organizatonProxy =
     GetProxy<IOrganizationService, OrganizationServiceProxy>(orgServiceManagement, 
     GetCredentials(authtype)))
{
     Entity account = new Entity("account");
     account.Attributes.Add("name", name);

     newAccount = organizatonProxy.Create(account);
}

Now there might be times that you might need to generate your own CRM primary keys, such as a data import of related records.  David Browne authored a blog post, http://blogs.msdn.com/b/dbrowne/archive/2012/07/03/how-to-generate-sequential-guids-for-sql-server-in-net.aspx, that has sample code on generating sequential GUIDs.  Generating your own primary ID’s should be done in rare occasions.

Thanks,
Walter

Microsoft Premier Field Engineer

MSFT Logo

Podcast and Overview: Update Rollup 2 for Microsoft Dynamics CRM 2013 Service Pack 1

$
0
0

Contents:

We're proud to announce that all packages for Update Rollup 2 for Microsoft Dynamics CRM 2013 Service Pack 1 were released on Friday, February 6th 2015 to the Microsoft Download Center!  The Service Pack 1 Update Rollup 2 packages should appear on Microsoft Update in February, 2015.

Note: Update Rollup 2 for Service Pack 1 was released to the Microsoft Download Center briefly on Wednesday January 28th, but an issue was found that warranted recalling the version 1 packages.  If you downloaded the packages released on January 28th, please discard them and replace them with the re-release versions announced here.

Update Rollup 2 for Service Pack 1 Re-Release Build number:

 06.01.0002.0112

Update Rollup 2 for Service Pack 1 Microsoft Download Center page

Here's the "Master" Microsoft Dynamics Knowledge Base article for Update Rollup 2 for Service Pack 1: (KB 2963850). Going forward, the plan is for the Master Knowledge Base articles for CRM 2013 and CRM 2015 Rollups and Service Packs to be published a bit in advance of release to aid planning.

Podcast

On Monday, February 9th 2015 at 1:30 PM Pacific Time, Greg Nichols and Ryan Anderson from the Microsoft CRM Premier Field Engineering Team provided information about:

  • The release of Update Rollup 2 for Service Pack 1 for Microsoft Dynamics CRM 2013
  • New fixes made available In Update Rollup 2 for Service Pack 1 for Microsoft Dynamics CRM 2013

during their Microsoft Dynamics CRM 2013 Update Rollup 2 for Service Pack 1 Podcast

Note regarding Podcasts: We've recently changed the location of where we are hosting and distributing our podcasts.  See PFE Dynamics Podcast Update for more information.

Go to Top

The "CRM Update Rollup Collateral Page"

For pointers to download locations, release dates, build information, and CRM Premier Field Engineering blogs and podcasts for all Microsoft Dynamics CRM Update Rollups and Service Packs, visit the "CRM Update Rollup and Service Pack Collateral Page"

Go to Top

General Upgrade Rollup and Service Pack Notes:

  • Testing CRM 2013 Update Rollups: Best Practices
    • Microsoft Dynamics CRM Premier Field Engineering recommends doing all the standard testing you generally do for all Update Rollups, which could be the functional and performance testing that you would do with a new major release or a subset of that test plan
    • The “general rule of thumb” for test plans for Update Rollup installs are:
      • Test any changes in a pre-production environment BEFORE introducing into your production environment. Manage your risk!
      • Consider using the Performance Toolkit for Microsoft Dynamics CRM to simulate your production user load in your testing environment, to shake out any performance-related issues early. The Dynamics CRM Premier Field Engineering can help you with using the CRM Performance Toolkit with CRM 2013 or CRM 2015
      • Test using the permissions your most restrictive end-user roles have. Testing with CRM Administrator permissions, for example, does not give you the complete picture
      • Concentrate on your SDK customizations, JavaScript, ISV add-ons – basically anything that’s not OOB ("Out of Box") functionality or customizations done from within the UI

Go to Top

Update Rollup 2 for Service Pack 1 packages are available for download via: 

to update the Dynamics CRM Product installations listed in this Microsoft Knowledge base article:

Microsoft Dynamics CRM Installations, Updates and Documentation

Note: Microsoft Dynamics CRM 2013 Updates will be pushed via Microsoft Update as Important updates

  • Client packages installed manually by downloading the packages and running install will require local administrator privileges. If the client packages are installed via Microsoft Update or SCCM (System Center Configuration Manager), they will not require local administrator privileges
  • Consider using Windows Server Update Services (WSUS) or similar software distribution technologies to distribute Dynamics CRM Update Rollups internally.  WSUS is a locally managed system that works with the public Microsoft Update website to give system administrators more control. By using Windows Server Update Services, administrators can manage the distribution of Microsoft hotfixes and updates released through Automatic Updates to computers in a corporate environment
  • For help with installation please see the Installation Information section of the Service Pack 1 Update Rollup 2 "master" Microsoft Knowledge Base article
  • Please review my former teammate Jon Strand's blog posting "CRM 2011: Silently Installing Update Rollups" which provides details on installing CRM Outlook client update rollups "silently" in order to limit end-user interruption, which also applies to CRM 2013 and CRM 2015 Update Rollups and Service Packs

Go to Top

Microsoft Dynamics CRM 2013 Update Rollup 2 for Service Pack 1 Prerequisites:

  • Essentially the prerequisites listed in the Microsoft Dynamics CRM 2013 Implementation Guide download for the various CRM components serviced

Go to Top

Issues resolved via Microsoft Dynamics CRM 2013 Update Rollup 2 for Service Pack 1: 

Microsoft Dynamics CRM 2013 Update Rollup 2 for Service Pack 1 contains fixes for issues reported by customers or discovered via internal testing.

Fixes released via CRM 2013 Update Rollup 2 for Service Pack 1:

  • Charts that contain Option Sets ignore the order that is specified
  • The GetFirstDayOfFiscalPeriod function does not correctly categorize date times that are equal to the start of each fiscal period
  • When exporting a custom report with a single page of data, an additional blank page is included in the export
  • Incoming email to a queue with an unresolved sender, and a blank subject fails to promote
  • SRS Data Connector Install fails if SQL Reporting Service Account in Trusted Domain
  • Unable to use Quick Find to search KB Articles when they are added to a dashboard as a list
  • Offline Synchronization error dialog was changed in the Outlook client
  • After the email to case functionality is set up using the opt in features of Service Pack 1, email delivery will fail if the email was sent from an unknown sender to a queue
  • Accessing a child record from a parent can cause parent activities to load on the child record's activity wall
  • An Unexpected error occurs when the combination of Access Mode and License Type is incorrect on a User form
  • The Cancel button on the bulk edit page is unresponsive
  • Ellipses are removed when the command bar labels contain many characters, and the resolution of the screen is set to 1024 by 768 or less
  • Relationship name is now visible in navbar items for relationships when building subgrids
  • When importing or deleting a solution you may receive query timeouts due to blocking from queries on the MailboxBase table
  • Generic SQL error is encountered when Synchronizing to Outlook or Exchange
  • Records, or Views are unable to be opened if they contain an invalid Option Set, or pick list values
  • Incorrect translation for the Left Voicemail label in Norwegian
  • The Record URL (Dynamic) functionality used in a dialog, or workflow produces a URL that is missing the organization name
  • When a custom web resource is added to the ribbon, and includes a custom icon the icon is not displayed
  • Business Rules will not activate when you compare a decimal field value with 0
  • Updates the Outlook Synchronization dialog to indicate the CRM Client for Outlook will be temporarily disabled during synchronization after CRM 2013 Service Pack 1
  • Resolved Case setting in Case Creation rule is not processing as expected
  • The report wizard now adds a link to transaction currency if a money field is in the report. This uses on of the 10 QueryLinkEntityLimit entries, so reports that have 10 linked entities will now fail
    • When you add a new tab to the top of form, and the tab will be collapsed by default, any content that loads when the tab is expanded will not load
  • With the windows DST patch for Russia and UR 18 installed, fields with date value set between 7th August 2015 to 26 October 2015 have an incorrect time offset
  • Outlook view sort order was changed if user clicked different entity and back to the original entity
  • When you try to edit a multiple line text field using a mobile form in either a mobile web browser or the iOS and Android mobile apps, the multiple line text field does not show enough text to easily scroll or perform edits
  • Importing a solution that contains new Quick Forms the import fails with the following error:
    • "The requested record was not found or you do not have sufficient permissions to view it"
  • Chart legends were not respecting a user's primary language if the base language for the CRM 2013 organization was set to English
  • Marketing Campaign headers displayed incorrectly with the Russian Language Pack
  • Performing a Save and Close of an Appointment record on the Sales Calendar resulted in an error if the user clicked the Save and Close button twice
  • LINQ queries defined in a custom plugin step were not functioning correctly
  • Inserting an e-mail template using Internet Explorer results in the template being inserted at the top of the e-mail body, instead of at the designated cursor location
  • Xrm.Utility.openEntityForm call fails with error:
    • 'Unable to get property 'argumentNull' of undefined or null reference'
  • When phone call activities are quick created from the Social Pane, the Subject of the phone call is set to the Description value entered.
    • This caused an issue if the Description value contained a line break
  • Reports embedded in IFRAME elements experience display issues when using Internet Explorer 9
  • When a customer creates an email activity or tracks an email that contains HTML content, and that content includes STYLE elements to apply CSS to the HTML content of the email, the style information will be inherited by the rest of the form on which the email body content is displayed.
    • This can occur on the email activity forms, or when viewing the Activities tab on the Social Pane
  • When you attempt to open the business process flow editor form for a managed business process flow, a script error will occur:
    • Unable to get property '_clientdisabledcontrols' of undefined or null reference
  • Generic SQL error occurs when Synchronizing to Outlook or Exchange
  • Activity Feeds UI experiences display issues if using a Japanese Language Pack after CRM 2013 Service Pack 1
  • The reading pane of Phone Call records is not displayed after switching the displayed form to "Information" and then attempting to customize the reading pane
  • One-to-Many relationships that are created during the creation of Entity Entitlement and Entitlement Template do not get created for any custom activity entities
  • Enable Rules that utilize Xrm.Page.getAttribute for custom Command Bar ribbons do not display correctly in the CRM 2013 Client for Outlook
  • Activity Feed Walls and Grids generate a script error when browsing with Internet Explorer 11:
    • Unable to get property 'text' of undefined or null reference
  • Go Offline operations in the CRM 2013 Client for Outlook were not synchronizing down all related records as expected
  • A SQL deadlock can occur if updating an Opportunity Product record after CRM 2013 Service Pack 1
  • After installing the CRM 2013 Client for Outlook, many platform tracing messages occur reporting Insufficient Memory Exceptions
  • A managed solution created in CRM 2013 Update Rollup 2 could not be upgraded by a new managed solution if it contained custom Activity entities
    Daylight Saving Time changes for Russian Time Zones
  • Navigating to the second page of a sub grid will cause the total record count to disappear.
    • Navigating to the last page of the sub grid will cause the entire paging bar to disappear
  • A script error occurs when attempting to Save and Close a quote record:
    • "Unable to get property 'tryTransitionToAlwaysEditMode' of undefined or null reference"
  • Duplicate Tracking Tokens are generated in the CRM 2013 Client for Outlook
  • Corrected an issue with Rollups that caused statement recompilation in SQL
  • An issue causing labels for the base language of an organization to disappear could occur when creating a new organization or upgrading an organization to Update Rollup 1 for CRM 2013 Service Pack 1
  • Scroll bar does not appear on Edit Properties and View Properties dialog windows
  • Rendering issues with SharePoint integration when using managed metadata columns in SharePoint
  • "Insufficient Permissions" error when adding user to a team
  • Cannot Save or Delete Connections when Team Templates are removed
  • Datetime fields with a format setting of Date Only were still showing the time value when viewing the field in CRM for Tablets
  • A lookup field for Appointment time on a Task entity form is not populated when using a mobile CRM client
  • If you execute ApplyRoutingRuleRequest message in code it executes with no error but the rule is not applied
  • When you use the SDK for Dynamics CRM, and you must authenticate to CRM using Claims authentication, the SDK will fail to work correctly unless the STS which should be used offers an issuing endpoint that produces an Asymetric Token security token response
  • When the async service attempts to process an async plugin, the service crashes with an error indicating an item with the same key has already been added
    Attempting to export a merged form from CRM 2013 results in a solution import failure:
    • "The label '{0}', id: '{1}' already exists. Supply unique labelid values"
  • Importing a solution with dashboards containing a custom label for another language fails if the language is disabled in the destination organization
  • Cannot update section names between Source and Destination server via import of a managed solution
  • When security roles are changed on a Microsoft Dynamics CRM 2013 form, the changes are not immediately being displayed
  • SharePoint integration does not work if SharePoint display language is not set to English
  • Drilling down into a chart generates a conversion error if the chart has two category (x-axis) attributes.
    • One category attribute is a field from a related entity, while the other is a lookup field on the main entity
  • A custom relationship set to Do Not Display is still shown in the CRM 2013 Mobile Express UI
  • When adding data to the CRM Fields form in the Microsoft Dynamics CRM 2013 Client for Outlook, that data is not being persisted to the record if the user does not click away from the field to lose focus
  • You may experience an error when uploading reports to CRM if the report contains a dynamic parameter as part of the paging information, such as count or page number
  • When you attempt to view an entity view or switch to a different view for a currently shown entity type you may receive an error:
    • "We are downloading some data in the background. Please wait several minutes and try again. Error code: 0X9000000 - C"
  • E-mails do not get tracked into CRM for a custom e-mail enabled entity
  • Some error messages when working with Appointment activities appear in a different language than the one selected in CRM
  • Users will receive "An error occurred" message when paging to the next page of related records in the Microsoft Dynamics CRM 2013 mobile site
  • Estimated revenue field is still editable after closing opportunity, even though the form is marked as read only
  • In a scenario where a user is using the web client to reply to an html email, if multiple line breaks are inserted or inserted then removed, the possibility exists of losing the font information for certain lines, which will not be apparent to the user until after the email is sent
  • When users attempt to add unordered lists in the Microsoft Dynamics CRM 2013 Email Text Editor, the indenting and bullet points of the list are lost when the email is sent or saved
  • Party information is not populated if creating an activity from a subgrid
  • Error when saving an email with dynamic values in Workflow Designer using Google Chrome
  • When AutoSave is off in System Settings and a View is modified for an Entity in Customize this System an error is encountered:
    • "Your changes have not been saved. To save you changes click cancel to stay on the page"
    • This error occurs after changing the Edit Filter Criteria and selecting OK, then attempting to Add Columns
  • When attributes are added to the quick find views, the views may timeout or perform slowly if the quick find indexes are not created properly
  • Going offline with the CRM 2013 Client for Outlook fails with error message:
    • "Column names in each table must be unique. Column name 'LeftVoiceMail' in table 'ActivityPointerBase' is specified more than once"
  • When you publish a web resource that is used on an entity form, the updated version of the web resource is not shown on the form
  • Users recieve exception for "Parameter name: s" when using Server Side Synchronization
  • Formatting of the notes in the Print Preview does not match the format in which the note is entered, ignoring line feeds
  • Numbered list formatting is incorrect when replying to an email within CRM
  • When you type the AltGR+A key for the Polish character "ą" in the body of an email CRM will show you the dialog to insert a KB article
  • After CRM 2013 Service Pack 1, a user is unable to add items via a sub grid on a non-refreshed entity
  • After upgrading to Update Rollup 1 for CRM 2013 Service Pack 1, solutions containing custom actions cannot be imported
  • Uninstalling a managed solution fails if another solution was created to hold managed components in an attempt to allow other components to be deleted
  • On Quote, Order, and Invoice forms the Associated entity navigation bar options do not change between refreshed and non-refreshed forms
  • When enabling High Contrast settings in Personal Options, the red asteriks or blue plus for required and business recommend fields no longer appear
  • Navigation buttons randomly disappear when viewing various entity forms in CRM 2013
  • Clicking between navigation tiles and the command bar may generate a script error
  • When you add or remove a user to an access team and you are using EnableRetrieveMultipleOptimization of 2, the users accessibility to the record is delayed
    • They will be able to see records that they shouldn't if removed from an access team, or not see records that they should if they were added to an access team
  • When you attempt to filter a lookup using a relationship which is a 1:N relationship, the filtered lookup produces an error dialog when the lookup icon is clicked
  • When accessing a CRM 2013 organization from an iPad device using Safari, form scrolling will be choppy at points if the forms contain a custom web resource in an IFRAME element
    • In addition, the IFRAME may appear to render incorrectly, missing the right and/or bottom borders
  • When you view the documents area on a record, and then deactivate or activate a record from within the record you will receive a script error:
    • Unable to get property 'primaryEntityId' of undefined or null reference
  • After a user opens an Appointment record from the Service Calendar, if they click the back button the browser an error indicating the Record Is Unavailable will occur
  • Attempting to set a notification using Xrm.Page.ui.setFormNotification will not work for Quick Create forms in CRM 2013
  • After setting the OrgDbOrgSetting 'SkipGettingRecordCountForPaging' to True, you will no longer be able to see the number of records selected
  • A solution created for backwards compatibility cannot be imported to a pre-CRM 2013 Service Pack 1 organization if the solution contains a workflow that triggers a child workflow
  • When adding a write-in product on the Quote entity, the Quote Product window may have an incorrect radio button selected and the Quote may not recalculate field values for calculated fields
  • When using Server Side sync and setting the option to track all email within personal options, received emails do not change the Track button, this causes the View in CRM buttons to not get enabled within the command bar
  • After applying the latest Product Update for Service Pack 1, it is no longer possible to Add New records to related sub-grids if the user accessing the record does not have write permissions to the parental entity
  • When merging records in the CRM web application UI, and the data to be merged included lots of fields to be moved from subordinate to the master, or if a few fields are merged and they contain large amounts of text, you are unable to merge the records
  • In CRM 2013, if you create more than one Quick Create form for an entity and adjust the form order to what you would like to be the default Quick Create form, the order will not be respected
  • If the CRM 2013 Service Pack 1 Japanese MUI update is applied to an Outlook Client where the base language is Japanese, the labels in the CRM subsection of the ribbon are displayed in English
  • The Display Rules for command bar buttons are not reevaluated after a Case record has been reassigned
  • When you troubleshoot the CRM Unzip Service and you view the trace logs, it mentions SharePoint Async service when it should mention CRM Unzip Service
  • Attempting to open an Order Product, Invoice Product, or Quote Product record when working offline in the CRM 2013 Service Pack 1 Client for Outlook a generic error may occur
  • After upgrading a CRM 2011 database to CRM 2013 Service Pack 1, some hidden system entities become visible in the Customize the System area of CRM 2013

Go to Top

Support for identical new technologies provided by CRM 2013 Update Rollup 2 and Service Pack 1:

The Microsoft Dynamics CRM Engineering team consistently tests Microsoft Dynamics CRM 2013 against pre-release and release versions of technology stack components that Microsoft Dynamics interoperates with. When appropriate, Microsoft releases enhancements via future Microsoft Dynamics CRM 2013 Update Rollups, Service Packs, or new major version releases to assure compatibility with future releases of these products. This compatibility matrix is updated via this Microsoft Knowledge Base article: Microsoft Dynamics CRM Compatibility List. Microsoft Dynamics CRM 2013 Update Rollup 2 and Service Pack 1 provide support for:

Go to Top

Hotfixes and updates that you have to enable or configure manually

Occasionally, updates released via Update Rollups require manual configuration to enable them. Microsoft Dynamics CRM Update Rollups are always cumulative; for example, Update Rollup 2 will contain all fixes previously released via Update Rollup 1 as well as fixes newly released via Update Rollup 2. So if you install Update Rollup 2 on a machine upon which you previously installed no Update Rollups, you will need to manually enable any desired fixes for Update Rollups 1-2:

  • Update Rollup 1: no updates requiring manual configuration
  • Update Rollup 2: no updates requiring manual configuration
  • Service Pack 1: no updates requiring manual configuration, but some new features need to be enabled by a CRM Server Administrator
    • Go to Settings > Administration and then click Install Product Updates
  • Service Pack 1 Update Rollup 1: no updates requiring manual configuration
  • Service Pack 1 Update Rollup 2: no updates requiring manual configuration

Go to Top

Microsoft Dynamics CRM compatibility with technology stack components: Internet Explorer, Windows Client and Server, Office, .NET Framework, and more

The Microsoft Dynamics CRM Engineering team consistently tests Microsoft Dynamics CRM 2013 against pre-release and release versions of technology stack components that Microsoft Dynamics interoperates with. When appropriate, Microsoft will release enhancements via future Microsoft Dynamics CRM 2013 Update Rollups, Service Packs, or new major version releases to assure compatibility with future releases of these products. This compatibility matrix is updated via this Microsoft Knowledge Base article: Microsoft Dynamics CRM Compatibility List.

Greg Nichols
Senior Premier Field Engineer, Dynamics CRM
Microsoft Corporation

CRM2013SP1UR2.mp3

Dynamics CRM Developers: Build Your Own Mobile Apps for Windows, iOS, and Android Part 2

$
0
0

Last time, I introduced how to start developing Mobile application for Microsoft Dynamics CRM by using CRM Mobile helper library. This time, I will introduce additional information which makes your work easier.

Previous post: Dynamics CRM Developers: Build Your Own Mobile Apps for Windows, iOS, and Android

Generate early-bound code

IntelliSense is one of the most required feature for many developers. By default Visual Studio does not provide any IntelliSense to Dynamics CRM Entities, and you need to generate classes which defines CRM Entities by yourself. Microsoft Dynamics SDK team released CrmSvcUtil.exe as part of CRM SDK, which generates such file for you. As CrmSvcUtil.exe generates code which depends on Microsoft.Xrm.Sdk.dll by default, you need extension to modify the output to use CRM Mobile helper library instead.

Follow the steps below to generate early-bound file for Mobile Application.

1. Download CRM Service Utility for Mobile Development and extract downloaded zip.
2. Open CrmSvcMobileUtil.sln file via Visual Studio from extracted folder.
3. If you will use Microsoft Dynamics CRM 2015 SDKs, change target .NET Framework to 4.5.2.
    a. Right click CrmSvcMobileUtil project and click Properties.
    b. Select .NET Framework 4.5.2 at Target framework dropdown.
    image
    * If you do not see .NET Framework 4.5.2, then click “install other frameworks…” and install the framework.
    c. Click “Yes” at Target Framework Change dialog.
4. Right click Reference and click “Add Reference”.
image
5. Click “Browse” button on the bottom.
6. Add CrmSvcUtil.exe and Microsoft.Xrm.Sdk.dll from SDK.
image
7. Open FilteringService.cs file.
8. Update List<string> variable in GenearteEntity method. You need to specify Entity by using logical name.
image
9. After finish updating the list, compile the solution.
10. Open Command Prompt and change directory to CRM Service Utility for Mobile Development\C#\bin\Debug folder where compiled assembly is located.
11. Run CrmSvcUtil.exe with arguments like below.
>CrmSvcUtil.exe /codecustomization:"Microsoft.Crm.Sdk.Samples.CodeCustomizationService,CrmSvcMobileUtil" /codewriterfilter:"Microsoft.Crm.Sdk.Samples.FilteringService,CrmSvcMobileUtil" /url:ttps://<your_organization>.api.crm.dynamics.com/XRMServices/2011/Organization.svc /username: <username> /password: <password> /out: <output_filename> /namespace: <namespace>
12. Add generated file to your Mobile Application project.

How to write code with IntelliSense

Now, you are ready to write code with IntelliSense. Use the following code snippet to write your code. To use early-bound, you have to call EnableProxyTypes method for OrganizationDataWebServiceProxy.

Retrieve a record

When you retrieve a record by using Retrieve method, you need to explicitly case result to early bound. The code below retrieves an account record, and case to Account type. You can also use EntityLogicalName property of each CRM Entity classes for it’s logical name. (As Logical Name may be different from Display Name like case and incident, it is safe to use EntityLogicalName property whenever possible).

ColumnSet cols = new ColumnSet("name", "telephone1");
Account account = (Account)await _proxy.Retrieve(Account.EntityLogicalName, new Guid("<record id>."), cols);

After you cast the result, you can use IntelliSense.

image

Retrieve multiple records

When you retrieve multiple record by using RetrieveMultiple, you can Case results one by one by using for or foreach statement or accessing element by specifying indexer for Array or use Linq query, etc.

ColumnSet cols = new ColumnSet("name", "telephone1");
var results = await CrmHelper._proxy.RetrieveMultiple(new QueryExpression(Account.EntityLogicalName, cols));

foreach(Account account in results.Entities)
{
}

Once you obtain a result from collection, then you can use IntelliSense like below.

image

Create an object

You can create strong-type object by using IntelliSense by using following code.

Account account = new Account()
{
    Name = "New Account",
    ParentAccountId =
        new EntityReference(Account.EntityLogicalName, new Guid("<id>")),
    NumberOfEmployees = 10
};

As each property has Type, if you try to assign different type, you see error message like below.

image

Another way to cast Entity

You can also use ToEntity<T>() method of Entity class.

ColumnSet cols = new ColumnSet("name", "telephone1");
Entity result = await _proxy.Retrieve(Account.EntityLogicalName, new Guid("<record id>."), cols);
Account account = result.ToEntity<Account>();

What’s Next?

We have published sample application as open source, which utilize this technic. Please download the sample application and see how it uses early-bound programming model.

CRM to Go – Sample app for Dynamics CRM

This sample application does not utilize MVVM model, so that it’s easy to debug and follow the code in code behind of UI. If you prefer MVVM model sample, please refer to samples below. (These samples use CRM Mobile Helper, but do not use early-bound programming model)

Activity Tracker Sample app for Dynamics CRM
Activity Tracker Plus Sample app for Dynamics CRM

Ken
Premier Mission Critical/Premier Field Engineer 
Microsoft Japan

CRM 2015 Upgrade: A Few Things You Can Prepare Ahead of Time

$
0
0

CRM 2015, which had been referred to as Vega or v7, offers some exciting new features and enhancements. Some customers, especially on premise customers, are interested to know what they can prepare ahead of time to make their upgrade process faster, more efficient, and improve user experience. This blog post covers a few items that can be prepared ahead of time prior to CRM 2015 upgrade. There are obvious benefits of doing this: less tasks to perform during the upgrade and less time required to upgrade. And don’t forget, users appreciate shorter maintenance window as well.

.NET 4.5 Installation
CRM 2015 Requires Microsoft .NET Framework 4.5. If you don’t already have .NET 4.5 installed, CRM 2015 installer will attempt to install .NET 4.5 as part of prerequisites. Reboot is required with .NET 4.5 installation. To speed up your upgrade process, you can take care of this requirement ahead of time: install .NET 4.5 and reboot your server. Then you are good to go.

Table Merge
Microsoft Dynamics CRM 2011 and earlier versions maintained two database tables for each entity. A base table contains out-of-the-box fields and an extension table contains custom fields. In CRM 2013, base table and extension table are merged into one table to reduce SQL deadlocks and performance related issues. CRM 2013 allowed customers to defer table merging to avoid upgrade performance and timing problems, it could also be done for customers who had to accommodate unsupportable reads against CRM’s base tables, giving them time to upgrade and eradicate unsupported SQL access.  Deferring the merge was optional and had to be pre-configured – if you have already upgraded to 2013 and did not configure a registry value to defer table merge the CRM 2013 upgrade has already merged your tables for you, automatically.

To check table merged or not, customer can run this query against the organization database to find out the entities that haven’t been merged.

SELECT e.Name, e.ExtensionTableName
FROM EntityView e
where e.IsActivity = 0
and e.ExtensionTableName is not null 
and e.IsIntersect = 0 
and e.IsLogicalEntity = 0
order by e.Name

 

If you have deferred your table merge, the CRM 2015 upgrade process will merge base table and extension tables automatically. The CRM 2013 Merge tool has been removed and registry key to prevent table merging is no longer valid in CRM 2015. Customers who have not performed tables merge in CRM 2013, can consider to perform table merge prior to upgrade to CRM 2015.  If you have deferred, merging your tables will help reduce upgrade time during the CRM 2015 upgrade.

Forms Design
CRM 2013 introduced a new form model. The 2013 form comes with several new features. After CRM 2013 upgrade, 2011 information forms are moved over along with 2013 forms. While CRM 2015 upgrade will carry over both set of forms, it is recommended to migrate to 2013 forms. New features and functionality are only available to 2013 forms. You can migrate your forms either prior to CRM 2015 upgrade or migrate them over time. If forms are migrated prior to upgrade, users can immediately take advantage of new features and functionalities for the new forms.

For more information about form upgrade, Brandon Kelly has published a great article--CRM 2013 Form Upgrade experience.

Supported Configurations
To upgrade to CRM 2015, you can upgrade only from CRM 2013 SP1 or higher versions. If your CRM environment is not running on CRM 2013 SP1 or higher versions, it is necessary to perform upgrade first.

The table below show supported configurations for servers and clients. Make sure your environment is running on supported configuration, we also have a blog article highlighting the supported configuration details for CRM 2015 here: http://blogs.msdn.com/b/crminthefield/archive/2014/05/19/important-information-about-supported-configurations-in-the-next-version-of-crm.aspx

Table 1. Supported configurations

Supported Servers

Supported Clients

Windows Server 2012 & Windows Server 2012 R2

Microsoft SQL Server 2012

Exchange 2010 and Exchange 2013

SharePoint 2010 and SharePoint 2013

IE 10 and IE 11

Chrome, Safari(Mac) and Firefox

Office 2010 and Office 2013

Windows 7, Windows 8.0 & Windows 8.1

Table 2. Configuration no longer supported

Servers no longer supported

Clients no longer supported

Windows Server 2008 and Windows Server 2008 R2

Small Business Server all version

Microsoft SQL Server 2008 and Microsoft SQL Server 2008 R2

Exchange 2007

SharePoint 2007

IE 8 and IE 9

Office 2007

Windows Vista

 For most up-to-date information, please reference Compatibility with Microsoft Dynamics CRM 2015.

 

Questions?

Do you have additional questions with Dynamics CRM 2015 upgrade readiness? Post a comment below, or contact us directly. We would love to hear from you!

Viewing all 393 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>