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

PFE Dynamics at "The Big Easy"– Convergence 2013

$
0
0

For those attending Convergence next week, I wanted to let you know that we will have members of the PFE Dynamics team there presenting some great content.  In addition, make sure to follow @PFEDynamics on Twitter to get updates on other PFE Dynamics activities at Convergence.  Below is a list of the sessions we will be presenting during the conference.  It would be great to meet you at our sessions, so please stop by and check them out! You can also find us at the Expo throughout the week in the Premier Support booth.  You can get more info on these sessions and others via the Convergence Session Catalog.

Virtual Convergence
New this year! For 2013, we’re changing the direction for Virtual Convergence. Last year, Virtual Convergence was the post-event experience for registered Convergence attendees wishing to access all recordings from our keynotes, general sessions, and breakout sessions. This year - Virtual Convergence has become the FREE online experience for non-registered attendees. Starting March 19, those unable to attend the event in New Orleans will be able to watch the keynote and general sessions live and take place in conversations via integrated social media. Post event - keynote, general, concurrent and deep dive sessions will be available on-demand. The site is a great way for customers, prospects and partners to learn more about Convergence, Microsoft Dynamics Solutions and the Dynamics community. By making select content available to a broader audience, we hope to increase our reach, raise awareness about Convergence and build interest and desire to attend the event in-person.

The site will go live on March 19th with our first keynote. Prior to that - you can check out the registration page which gives more information on Convergence, Microsoft Dynamics, and what is included with Virtual Convergence

FYI – it’s a low barrier of entry to get access to Virtual Convergence.  Just name/company/email and you’re in!

PFE Sessions @ Convergence 2013

Session

Date

Time

Presenters

IDCRM04-R1 – Customization Tips & Tricks in Microsoft Dynamics CRM

Wed 3/20 11:00-12:00 Sean McNellis, Shawn Dieken, Brandon Kelly

IDCRM04-R2 – Customization Tips & Tricks in Microsoft Dynamics CRM

Thurs 3/21 4:00-5:00 Sean McNellis, Shawn Dieken, Brandon Kelly

IDCRM08 – Upgrading from Microsoft Dynamics CRM 4.0: A Practical Guide

Wed 3/20 3:30-4:30 Sean McNellis, Shawn Dieken, Brandon Kelly
CSCP12-R1 - Maximizing SQL Performance for Microsoft Dynamics Wed 3/20 5:00-6:00 Rod Hansen
CSCP12-R2 - Maximizing SQL Performance for Microsoft Dynamics Thurs 3/21 4:00-5:00 Rod Hansen

 

I know that personally Convergence is my favorite onsite of the year as I get a chance to network and reconnect with so many great customers and partners.  I really enjoy hearing all of the success stories about how you are leveraging Dynamics products to accelerate and grow your business success!  I also enjoy hearing about any challenges you are having with your deployment and how we can help make it successful.

Thanks for reading and I hope that you have a great Convergence 2013!

Shawn Dieken
Microsoft Premier Field Engineer


Microsoft CRM Online Performance Tips & Tricks – Part 2

$
0
0

In this post I'll be discussing the second part of troubleshooting and tuning performance with CRM Online.  In my last blog post, Microsoft CRM Online Performance Tips & Tricks - Part 1, I explained where to start with troubleshooting performance with CRM Online; evaluating user expectations and the different areas of the application, measuring performance, and establishing a baseline.  Once we have that information, we then started to look into the various parts that can affect performance, which we looked at hardware and software.  Continuing on with the other parts that affect performance, below I'll discuss: network connectivity, customizations, and the CRM client for Outlook.

Networking:

Connectivity to the CRM Online service is probably one of the larger areas that people think is a contributor to performance. In many cases the end users network connection to the CRM Online service is adequate.  What do we deem as an adequate connection to the service?

  • Bandwidth > 50 Kilobytes per Second
  • Latency < 150 milliseconds

The way to measure this speed is with the CRM Online Diagnostics Page.  Substitute your Organization Name in the URL below.

  • https://<Organization>.crm.dynamics.comtoolsdiagnosticsdiag.aspx

Once on the page click the Run button to test your Bandwidth and Latency, as well as the Jscript rendering times on your machine, measured by JavaScript Dom Benchmark.

If your connection is not within the adequate range for all users, some users, or some locations, start to narrow down what is different.

  • Prioritize the CRM traffic in your network.
  • If you have branch offices verify that their CRM Online traffic goes directly out to the internet and is not routed through a main office prior to going outside.
    • If you have any Proxy Servers or WAN Accelerators, check their configuration.
    • If these scan traffic, exclude this for CRM Online.
      • These devices could be modifying the headers of the packets and stopping compression and caching of the CRM Online traffic affecting performance.
        • Run a fiddler trace on the client machine to check if compression and caching is being used.
        • Compression:  On the Header look to see that you have Transport: "Content-Encoding: gzip"
  • If it is not working you will see the Transport look like: "Connection: Keep Alive"
  • Caching: On the Header, look to see that you have Caching: "Vary: Accept-Encoding"
    • If it is not working the Cache will show: "Vary: *"

Customizations:

A CRM Online deployment's customizations are often the biggest area that can affect performance that customers don't realize.

  • First establish what parts of CRM are slow as explained earlier.
    • Views
      • How many Fields/Columns are on the View?
        • Only put the fields that the users need to have.
        • Consider disabling the SkipGettingRecordCountForPaging using the OrgDBSettingsTool if it isn't something the users need or use.
        • Record Forms
          • What is on the Form?  How many fields, subgrids, and IFrames are there?  The more data on the form the longer it takes to retrieve and render on the end users machine.
          • Can you use role based forms to minimize the amount of data on forms for users?
            • For example we could have a Sales form and a Service Form.  Different user groups may only need access to certain fields, subgrids, IFrames.
            • If users don't need to see certain areas of the form all the time, consider collapsing them by default, especially subgrids.  This way when the form loads it doesn't have to load this data initially.  If the user needs to see it, they can expand it.
            • How much impact is your Jscript having on your forms?
              • Test by disabling your OnLoad and OnSave events and comparing against your baseline times.
              • Optimize your Jscript code.
            • Quick Find
              • Limit the number of fields you make available for quick find. 
              • Don't include Pick List values in quick finds if possible.

Outlook Client:

The last component to consider is the CRM Client for Outlook.  There are a number of configuration settings that can impact the performance of machine running the CRM Client for Outlook, namely sync process, email tagging and some functionality.

  • Outlook Synchronization
    • Evaluate the filters you have configured.  Only synchronize what data you need to have in Outlook.
      • Filters are set in Outlook under File | CRM | Set Personal Options | Synchronization tab | Outlook Filters | Verify the 'Outlook Synchronization Filters' is selected from the drop down.  Disable, add, and update the filters to control the data synchronization to Outlook.
      • Set the synchronization schedule to a longer duration so the synchronization process isn't constantly occurring on the machine.
        • The schedule is set in Outlook under File | CRM | Set Personal Options | Synchronization tab | update the 'Schedule automatic synchronization with Outlook folders every' value.
  • Address Book Provider
    • Set the filter to only match only your contacts.
      • The value is set in Outlook under File | CRM | Set Personal Options | Address Book tab | check the radio button for 'Match only against contacts synchronized to Microsoft Dynamics CRM'
      • Set the other records to 'Not Match', or 'Only Match Owning Records'.
        • The option is set in Outlook under File | CRM | Set Personal Options | Synchronization tab
  • Offline Synchronization Process
    • Evaluate the filters you have configured.  Only synchronize what data you need to have while working offline.  With CRM Online being available wherever you have an internet connection there shouldn't be many times when you'll need to work with data offline.
      • The filters are set in Outlook under File | CRM | Set Personal Options | Synchronization tab | Outlook Filters | Verify the 'Offline Synchronization Filters' is selected from the drop down.
      • Set your Synchronization Schedule to a longer duration so your sync process isn't constantly occurring on your machine.
        • The schedule is set in Outlook under File | CRM | Set Personal Options | Local Data tab | update the 'Update local data every' minutes value, and validate the checkbox is selected.
  • Pinned Views
    • Pinned views in Outlook take up memory on your client machine.  You can decrease this by following the steps below.
  • Email Tagging Queries
    • Minimize these by queries by adjusted System Settings within the CRM UI that can control how often these queries execute.
      • These settings are configured in CRM | Settings |Administration |System Settings | Outlook Tab
        • Uncheck the 'Perform checks as new e-mail is received'.
        • Update the 'Promote Incoming e-mail every' to a longer duration.

In these two posts on performance with CRM Online there are a large number of considerations and all of them are important and can affect customers at varying degrees.  As you make each change measure your performance so you know what changes are improving your performance and by how much.   In making multiple adjustments that give you small gains which in the end will add up to a noticeable improvement in performance for end users. 

Thanks!
Jaden

Microsoft Premier Field Engineer

   

  

UR12/Polaris Changes to Dynamics CRM 2011 Async Maintenance Jobs

$
0
0

In earlier articles, we provided details on Dynamics CRM 2011's internal maintenance operations performed regularly by the CRM Asynchronous Service. With the release of Update Rollup 12/Polaris there have been a few changes introduced. In an effort to keep you updated as the product evolves, we've highlighted two specific changes that impact previously issued guidance below:

  • ReindexAll: This operation has historically performed two functions: 1) reorganize/rebuild fragmented indexes and 2) shrink database/log files. Due to the latter step, we generally recommended disabling this job and implementing your own index maintenance routine. Nevertheless, in UR12/Polaris, the shrink database/log file commands have been removed from the overall operation. Thus, our previous guidance now shifts to a deployment-specific judgment call based solely on the merits of the provided maintenance methodology. If you prefer to implement your own index maintenance routine, continue with disabling this operation, otherwise reschedule it for a non-peak usage hour as with the other available maintenance operations.

    Another minor change regarding the job's maintenance methodology, a fragmentation threshold of 30% has been introduced above which a rebuild of the index will be performed and below which the index will be ignored for the maintenance cycle. Our previous article detailing the maintenance operations has also been updated to reflect these changes.

     

  • DeletionService: We found that a new feature added to the CRM 2011 SDK also presents deletion cleanup implications. The new feature referred to is the metadata change tracking capabilities. With the UR12/Polaris SDK release, you now have the ability to request metadata changes that have occurred since a provided timestamp (See more details on MSDN). One potential metadata change that could occur is the deletion of metadata – attributes, entities, relationships, etc. Since the metadata deletion process performs immediate deletion changes to the metadata definitions and schema elements (similar to physical data deletion), the platform must track the deleted schema elements for a period of time so that future requests for tracked metadata changes can include those elements which no longer exist. To accomplish this, the platform tracks references to deleted metadata in the MetadataSyncTrackingDeletedObject table.

    Now, here's where the DeletionService operation comes into play. At some point, those references are no longer needed and thus, the DeletionService operation will consider them expired and delete them if their CreatedOn timestamp is earlier than the organizationally-defined expiration period (90 days – this is the same value used for determining expired offline sync subscription records). Our previous article detailing the purpose of the DeletionService operation has also been updated to reflect this change.

As always, we will do our best to keep you updated with relevant changes introduced in product updates and upgrades!

Austin Jones

Microsoft Premier Field Engineer

Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 13

$
0
0

We're proud to announce that all packages for Microsoft Dynamics CRM 2011 Update Rollup 13 were released on Wednesday, March 27th, 2013 to the Microsoft Download Center!   We plan on releasing the Update Rollup 13 packages to Microsoft Update in April, 2013.

Update Rollup 13 Build number:

5.0.9690.3448

Update Rollup 13 Microsoft Download Center page

Here's the "Master" Microsoft Dynamics Knowledge Base article for Update Rollup 13: (KB 2791312). Going forward, the plan is for the Master Knowledge Base article for CRM 2011 Update Rollups to be published a bit in advance of release to aid planning.

On Wednesday, Mar. 27th 2013 Greg Nichols and Ryan Anderson from the Microsoft Premier Field Engineering team provided information about:

  • The release of Update Rollup 13 for Microsoft Dynamics CRM 2011
  • New fixes and Service Release functionality made available In Update Rollup 13

at 11 AM Pacific time on BlogTalkRadio during their Microsoft Dynamics CRM 2011 Update Rollup 13 Podcast.

Note regarding Podcasts: You can make our CRM Premier Field Engineering podcasts available on Zune by using the RSS feed below.  In the Zune software, go to Collection -> Podcasts and click on the Add a Podcast button on the lower left, then enter the url for the RSS feed: http://www.blogtalkradio.com/pfedynamics.rss. After that, you can adjust the series settings like any other podcast, so you can sync with your smartphone or Zune.

 

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"

See also:

  • My teammate Sean McNellis' blog posting "UR12 vs. Polaris: Commonalities Differences & Improvements" which describes what December 2012 Service Release / Polaris features were released to on-premise customers via Update Rollup 12 and which have only been released to CRM Online customers, with on-premise release planned for later this year

Update Rollup 13 news!

Unlike some earlier Update Rollup releases like Update Rollup 6 and 12, Update Rollup 13 does not add major functionality changes. It 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. So, we're pleased to announce that the Microsoft Dynamics CRM Compatibility List now indicates that Update Rollup 13 provides support for:

Note: to install Microsoft Dynamics CRM on a server running Windows Server 2012, you must install the Update Rollup 13 SHS (Self-Healing Setup) package hosted on the Microsoft Update site when you are prompted to "update install files" during CRM setup. That release to Microsoft Update is tentatively scheduled for April 9th, 2013.  This SHS package is also needed for upgrading a Windows Server to Windows Server 2013 when CRM 2011 is already installed.  For more details on the last scenario, see:

How to upgrade a Microsoft Dynamics CRM Server application to Windows Server 2012

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

  • UR12 includes 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 sdktoolsdevelopertoolkit folder
  • Microsoft Dynamics CRM 2011 Software Development Kit (SDK) updated for Update Rollup 12 (version 5.0.13)
  • 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 this year's 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_MACHINESOFTWAREMicrosoftMSCRM) 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 will appear in the MSDN version of this whitepaper as quickly as possible.

Notes:

  • Testing Update Rollups: Best Practices
    • Premier Field Engineering recommends treating Update Rollup 12 testing like to 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 Custom Code Validation Tool
    • Consider familiarizing yourselves with this tool… though the download page mentions Update Rollup 9, it hasn’t had much utility until now since the UR9 changes mentioned in the summary below were never released until UR12:
      • Microsoft Dynamics CRM 2011 Custom Code Validation Tool
      • 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 13 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:

Dynamics Convergence 2013 Wrap Up & The CRM Community

$
0
0

Hey all – We had another fantastic turn out at Convergence this year and our PFE team always appreciates the connections and putting faces to names. This year as Shawn Dieken, Brandon Kelly, Chip Taylor, and I connected with hundreds of customers and partners, it was clear to me that our once small community is growing incredibly fast. While there are many many new folks to the community, we also have a great underpinning of dedicated CRM professionals with years of experience including Customers, Partners, MVP’s, and Microsoft Employees across R&D, Support, PFE, etc. It’s fantastic to see so many new folks involved and helping to share ideas, best practices, tips, tricks, etc. While Convergence is a great place to do this across many customers and communities all in one spot, you can still participate even if you weren’t there, here are some resources to get you by until the next Convergence:

With the product group attending and presenting in many sessions I know many of you shared feedback directly with them and if you have more ideas or feedback please make sure to register for “Microsoft Dynamics Suggestions for CRM” on the Connect portal. Once registered click the “Feedback” link in the left hand navigation. Use this site to search for suggestions and vote on them. If you have feedback that isn’t already out there you can log it, then have others vote on your idea. It’s important to note, the connect site isn’t for break/fix support or troubleshooting – it is specifically for suggestions around design, features, etc. In addition, our team took many notes from your questions asked of us and we’re looking to add more blog content to support our PFE Customers, as well as the Dynamics CRM technical community, as you’re looking for more technical information and/or solving problems with your users or customers.

That all said, I want to thank everyone who made it to our sessions, if you weren’t able to attend for any reason I do hope that we got the opportunity to connect this year and we hope to see you next year in Atlanta! Also note, if you would like to have me or anyone from our team work with your company remotely or on-site assisting with Dynamics CRM or nearly any Microsoft product please contact your Microsoft Premier Technical Account Manager for booking information. If you are interested in becoming a premier customer contact premier@microsoft.com. And as always, feel free to connect via our blog, Twitter, FaceBook, etc.

Thanks!

Virtualization – free Q&A sessions by Microsoft

$
0
0

Almost all customers I work with are using virtualization in some fashion with Microsoft CRM.  While not specific to CRM, I wanted to pass along this opportunity to learn more about Hyper-V and the chance for Q&A with experts in this field.  Enjoy!

 

On April 3, Microsoft Virtual Academy will launch the first in a monthly series of free Q&A sessions led by Microsoft technical evangelists – beginning with an Introduction to Hyper-V hosted by Symon Perriman.

The live, audience-led discussion is geared toward  IT professionals that are either new to virtualization, have questions about Hyper-V, or are interested in learning how to better leverage the Windows Server 2012 platform, Hyper-V and System Center 2012 SP1. Attendees can get answers to their questions on technical capabilities, get advice for using products in a live environment; and learn from their peers in the industry and Microsoft expert Symon Perriman.

Symon is a Senior Technical Evangelist at Microsoft and holds several patents and certifications, including MCSE Private Cloud, Microsoft Certified Trainer (MCT) and VMware Certified Professional (VCP). He is a recognized industry expert in datacenter management, cloud, virtualization, high-availability, disaster recovery, mobile technologies and social media. Symon has contributed to four technical books for virtualization, server, clustering and SQL; co-hosts the ‘Edge Show’ for IT Professionals; and has had technologies featured in PC Magazine.

Registration is now open for this free Q&A event: Register now.

Ryan Anderson

Microsoft Premier Field Engineer

How to find which Active Directory security groups belong to your CRM deployment

$
0
0

Have you tried to locate the Active Directory security groups that belong to your Dynamics CRM deployment only to find results like this?

clip_image002

First off, why would you ever get results like this?  Dynamics CRM 2011 installs 4 Active Directory Security Groups (PrivReportingGroup, SQLAccessGroup, ReportingGroup and PrivUserGroup) by default per deployment.  Some people think this is per organization, but that is not correct.  No matter how many organizations you have in a CRM deployment, you will only have 4 security groups per deployment in CRM 2011.  So, you could have this many groups because you have several CRM deployments installed in this domain.  CRM 4.0 also used similar AD security group names, so there may be some left over from old 4.0 deployments or even failed CRM server installation attempts.  When you un-install CRM, we do not delete the AD security groups that we create, so I have seen customer’s with orphaned security groups because of that reason as well.

Regardless of why you may have so many, you might want to find out which belong to a specific CRM deployment, or just want to do some clean up in Active Directory.  Disclaimer: Make sure you are absolutely positive you do not need the groups before deleting them!

Run this query against any Organization database in the deployment you want to identify AD security group names for:

select ReportingGroupName, SqlAccessGroupName, PrivReportingGroupName from Organization

This will return something like this: image

Note: We do not list the PrivUserGroup name in this table, but it should have the same GUID.

Now you can search in Active Directory and locate the AD security groups that belong to your CRM deployment.

  clip_image002[1]

From there you can either move the security groups into a specific Organizational Unit for better organization, or rename them to something that you can easily identify.  These groups are tied back to CRM by GUID, so you can move or rename them without issues.

Scenario: What if you renamed your security groups or use pre-created groups for your CRM 2011 server install?  In that case you have a bit more work to do, but Sean McNellis covered that in a previous blog post.

Hopefully this information helps to answer the question of which Active Directory security groups belong to your deployment and allows you to do some clean up of old groups in Active Directory.

As always our PFE team is ready to help if you need the assistance.  In addition, we have a plethora of other services we offer such as developer training, admin workshops, and code reviews.  If you would like to have another Microsoft PFE or I visit your company and assist with the ideas presented on our blog, contact your Microsoft Premier Technical Account Manager (TAM) for booking information.  For more information about becoming a Microsoft Premier customer email PremSale@microsoft.com, tell them CRMInTheField or I sent you.

Thanks!
Shawn Dieken

Microsoft Premier Field Engineer

Code Review: Refactored Handling of Plug-in Pre-Image Attribute Values

$
0
0

During a recent Dynamics CRM 2011 code review engagement, I noticed a pattern being implemented repeatedly throughout the customer's plug-in library. This library was in desperate need of a refactor in the form of a method that encapsulated the repeated pattern. In my assessment report, I provided them a suggested method refactor which could eliminated hundreds of lines of redundant plug-in code. Keep reading and I'll provide you this same method to put in your coding arsenal.

The pattern I identified sought to incorporate the values from pre-event entity image snapshots when evaluating the primary entity's attribute values. We most often see this scenario for pre-event Update message plug-in code. The need for such a pattern is dictated by the nature of the Update message where the entity submitted only contains the attributes to be updated. Makes perfect sense…until you are executing within the event pipeline and need to evaluate a condition based on another attribute of the entity that may or may not have been submitted with the update.

Enter pre (and post) event image registrations. Event images provide a snapshot of the primary entity prior to (or after) the requested operation. This capability allows you to have broader context about the entity state without having to incur unnecessary retrieval of the primary entity from within your plug-in operation. Nevertheless, having this additional context means that you have two potential sources for the value of an entity attribute. Handling this unique situation requires additional logic to determine the appropriate value. The logic goes something like this:

  1. Attempt to get the attribute value from the primary entity
  2. If the primary entity contains the attribute, use its value
  3. Otherwise, if the primary entity doesn't contain the attribute, attempt to get the attribute from the pre-event image entity
  4. If the pre-event image entity contains the attribute, use its value
  5. Otherwise, use some default value (or null)

First, let's take a look at how this logic is often implemented in code.

Common Scenario
int value = -1; //default value

if (entity.Contains("attributename"))
{
  value = entity.GetAttributeValue<int>("attributename");
}
elseif (preImage.Contains("attributename"))
{
  value = preImage.GetAttributeValue<int>("attributename");
}

Next, we'll take the logic implemented above and encapsulate it in a method. I chose an extension method in this case to provide fluent companion to the standard Entity.GetAttributeValue<T>(string attributeLogicalName) method.

Extension Method
public static class EntityExtensions
{
  ///<summary>
  /// Extension method to get an attribute value from the entity
  /// or its image snapshot
  ///</summary>
  ///<typeparam name="T">The attribute type</typeparam>
  ///<param name="entity">The primary entity</param>
  ///<param name="attributeLogicalName">Logical name of the attribute</param>
  ///<param name="image">Image (pre/post) of the primary entity</param>
  ///<returns>The attribute value of type T</returns>
  ///<remarks>If neither entity contains the attribute, returns default(T)</remarks>
  public static T GetAttributeValue<T>(this Entity entity,
                                       string attributeLogicalName,
                                       Entity image)
  {
   return entity.GetAttributeValue<T>(attributeLogicalName, image, default(T));
  }

  ///<summary>
  ///Extension method to get an attribute value from the entity or image
  ///</summary>
  ///<typeparam name="T">The attribute type</typeparam>
  ///<param name="entity">The primary entity</param>
  ///<param name="attributeLogicalName">Logical name of the attribute</param>
  ///<param name="image">Image (pre/post) of the primary entity</param>
  ///<param name="defaultValue">The default value to use</param>
  ///<returns>The attribute value of type T</returns>
  public static T GetAttributeValue<T>(this Entity entity,
                                       string attributeLogicalName,
                                       Entity image,
                                       T defaultValue)
  {
      return entity.Contains(attributeLogicalName)
          ? entity.GetAttributeValue<T>(attributeLogicalName)
          : image != null && image.Contains(attributeLogicalName)
              ? image.GetAttributeValue<T>(attributeLogicalName)
              : defaultValue;
  }
}

How does incorporating our new extension method impact the original code? As shown below, each instance of executing this logic has been reduced to a single line of code. Implement this logic even a few times in a single plug-in and the reductions add up quickly.

Refactored Scenario
int value = entity.GetAttributeValue<int>("attributename", preImage, -1);

Remember, if logic is worth repeating, it’s worth implementing once as a method!

Curious what’s involved in the PFE Dynamics Code Review service?  It’s comprised of a thorough analysis of managed, .NET code from components that interact with Dynamics CRM and extend the core platform as well as client extensions such as JavaScript libraries.  That analysis seeks to identify contraventions to known best-practices that present design, security, performance, or maintainability/supportability concerns.  In addition, we commonly provide sample code to demonstrate a remediation approach to the most impactful issues.

Please let us know if the timing is right to explore a Code Review service engagement for your CRM solution or if you’re interested in becoming a Microsoft Premier Services customer.

Austin Jones

Microsoft Premier Field Engineer


CRM 2011 Performance: Take advantage of better query performance for your Quickfinds!

$
0
0

Hey everyone, as many of you may know we made some pretty big changes to how CRM retrieves data from SQL server, starting in UR10. Part of this was adding various measures and statistics to change the queries based on the dataset and the users access to records, we also added the ability to “hint” to CRM how it should structure a query based on a property called isQuickFindFields.  The property was created specifically for quickfinds but if you’re like our CRM PFE’s you’ll want as much control as possible for how queries interact with SQL server.  If you’ve been looking for a way, especially in extensibility scenarios, to better control performance via index tuning and smart querying then you’re going to love this!

Now for the comparison: I’ll show you the differences between a quickfind without this optimization (default pre-UR10) and a quickfind with this optimization (post UR10).  You’ll find a super zoomed out clip of the query plans below, and while they’re impossible to read they still illustrate how the query plan is split up differently based on these settings.  The union based query splits up such that it could be filtered in multiple spots and potentially leverage parallelism (big opportunity to put index tuning to work here).  Compare that to the standard (preUR10) query which joins everything together and many times cannot filter the dataset until the end of the plan, this isn’t always the case but no matter what the SQL optimizer will do whatever it can to try and give us a decent query plan given the circumstances.  Post UR10 CRM uses a Common Table Expression along with a Union effectively telling SQL that it can go process all the individual datasets separately (including filtering them) then come back and union the results together – meaning it will filter earlier in the process if it can.

Please note: this new query is *not* necessarily always more efficient, thus CRM will change the approach for various users and sizes of datasets, but in many cases this query offers us more flexibility when dealing with large datasets and leveraging custom indexes; essentially it’s another tool in our toolkit of options we can use when we’re tuning and optimizing.  Another note, this is enabled by default for quickfind queries today and no other views by default.  Want to know more?  Want to get down to the fine details of what things can be tweaked?  Read more here in the Optimization White Paper.  I want to emphasize, query plans will change depending on your SQL server and all the statistics SQL uses to make informed decisions – these are common cases below.

Default out of box query prior to UR10:

exec sp_executesqlN'select
top 251 "new_labor0".New_WorkCodeId as "new_workcodeid"
, "new_labor0".New_Minutes as "new_minutes"
, "new_labor0".New_AccountId as "new_accountid"
, "new_labor0".New_comments as "new_comments"
, "new_labor0".New_LaborDate as "new_labordate"
, "new_labor0".CreatedOn as "createdon"
, "new_labor0".new_projectid as "new_projectid"
, "new_labor0".crmfargo_LaborCaseId as "crmfargo_laborcaseid"
, "new_labor0".New_laborId as "new_laborid"
, "new_labor0".New_WorkCodeIdName as "new_workcodeidname"
, "new_labor0".New_AccountIdName as "new_accountidname"
, "new_labor0".New_AccountIdYomiName as "new_accountidyominame"
, "new_labor0".new_projectidName as "new_projectidname"
, "new_labor0".crmfargo_LaborCaseIdName as "crmfargo_laborcaseidname"
from New_labor as "new_labor0" (NOLOCK) 
where
(((("new_labor0".New_WorkCodeIdName like @New_WorkCodeIdName0 or "new_labor0".OwnerIdName like @OwnerIdName0 or "new_labor0".crmfargo_LaborCaseIdName like @crmfargo_LaborCaseIdName0 or "new_labor0".New_comments like @New_comments0)))) order by "new_labor0".New_LaborDate desc, "new_labor0".New_laborId asc',N'@New_WorkCodeIdName0 nvarchar(9),@OwnerIdName0 nvarchar(9),@crmfargo_LaborCaseIdName0 nvarchar(9),@New_comments0 nvarchar(9)',@New_WorkCodeIdName0=N'Contract%',@OwnerIdName0=N'Contract%',
@crmfargo_LaborCaseIdName0=N'Contract%',@New_comments0=N'Contract%'

Fig1: Common pre-UR10 query plan:

clip_image001_thumb[3]
* notice how the data (thickness of the gray bars) continues to grow towards the upper left, it then all joined together using a hash join to put it all into one large dataset, then it is sorted and filtered.  This illustrates how all the data is combined together then sorted before it can be filtered which can be less efficient, especially with some datasets (in others this is much less of a problem).

With the isQuickFindFields property enable (post UR10) here is the difference in the TSQL query and the plan – also note how there is now an inline count:

exec sp_executesqlN'WITH __QuickFind__ as (select top 10001 [New_laborId] from (
SELECT "new_labor0".[New_laborId] as [New_laborId] from [New_laborExtensionBase] as "new_labor0" where ("new_labor0".New_comments like @New_comments0) UNION
SELECT "new_labor0".[New_laborId] as [New_laborId] from [New_laborBase] as "new_labor0" where "new_labor0".OwnerId in (select [OwnerId] from [OwnerBase] as "new_labor0" where "new_labor0".Name like @OwnerIdName0) UNION
SELECT "new_labor0".[New_laborId] as [New_laborId] from [New_laborExtensionBase] as "new_labor0" where "new_labor0".New_WorkCodeId in (select [New_workcodeId] from [New_workcodeExtensionBase] as "new_labor0" where "new_labor0".New_name like @New_WorkCodeIdName0) UNION
SELECT "new_labor0".[New_laborId] as [New_laborId] from [New_laborExtensionBase] as "new_labor0" where "new_labor0".crmfargo_LaborCaseId in (select [crmfargo_laborcaseId] from [crmfargo_laborcaseExtensionBase] as "new_labor0" where "new_labor0".crmfargo_name like @crmfargo_LaborCaseIdName0)) as [__QuickFindInternal__])select
top 251 "new_labor0".New_comments as "new_comments"
, "new_labor0".New_Minutes as "new_minutes"
, "new_labor0".New_LaborDate as "new_labordate"
, "new_labor0".New_AccountId as "new_accountid"
, "new_labor0".OwnerId as "ownerid"
, "new_labor0".crmfargo_LaborCaseId as "crmfargo_laborcaseid"
, "new_labor0".New_laborId as "new_laborid"
, "new_labor0".New_AccountIdName as "new_accountidname"
, "new_labor0".New_AccountIdYomiName as "new_accountidyominame"
, "new_labor0".OwnerIdName as "owneridname"
, "new_labor0".OwnerIdYomiName as "owneridyominame"
, "new_labor0".OwnerIdType as "owneridtype"
, "new_labor0".crmfargo_LaborCaseIdName as "crmfargo_laborcaseidname"
, case when (select COUNT(*) from [__QuickFind__]) = 10001 then 1 else 0 end as
[__QuickFindLimitValue__]
from New_labor as "new_labor0" (NOLOCK) 
where
[new_labor0].[New_laborId] in (select [New_laborId] from [__QuickFind__]) and (((("new_labor0".statecode = @statecode0)))) order by
"new_labor0".New_LaborDate desc
, "new_labor0".New_laborId asc',N'@statecode0 int,@New_WorkCodeIdName0 nvarchar(9),@OwnerIdName0 nvarchar(9),@crmfargo_LaborCaseIdName0 nvarchar(9),@New_comments0 nvarchar(9)',@statecode0=0,@New_WorkCodeIdName0=N'Contract%',@OwnerIdName0=N'Contract%',
@crmfargo_LaborCaseIdName0=N'Contract%',@New_comments0=N'Contract%'

Fig2: Common post UR10 query plan:

clip_image001[6]_thumb[6]

At face value this looks much more complex, however if you dig in you’ll find the plan to be more efficient.  In this case each portion of the plan can be processed and filtered independently from the other, which can have dramatic reductions in the amount of data that needs to be processed resulting in much less expensive queries.

Here are some questions I have received around this change:

Q: This is AWESOME – how do I get this? 
A: Great news – everyone can get it or already has it , install the latest rollup and make sure EnableRetrieveMultipleOptimization is set to default. If you’re already on UR10 or higher and have the feature set to zero (or not set at all) you will then have this feature enabled!

Q: What’s an “enable retrieve” … – whatever you said?
A: It’s highlighted in the Optimizing CRM white paper and can be used to control CRM’s query behaviors.  It can be set in the registry for onPrem customers or via your orgDbOrgSettings if you’re onPrem or Online – I personally prefer the orgDbOrgSettings because they aren’t server-specific and don’t require any registry editing. Also, be aware there are a few other settings documented in that white paper that can give you even more control over the query behavior – but most of the time the defaults are fine.

Q: What are OrgDbOrg settings?  
A: OrgDbOrgSettings are available on a per-organization basis and offer you greater flexibility and control of your CRM organization – no matter if you have Online, onPremise, or partner hosted – you all have orgDbOrgSettings for every CRM Organization.  If you are unfamiliar with these, there is a command line tool you can use to change them – however I recommend using an easier to use, web based, editor posted here: http://orgdborgsettings.codeplex.com/*hint* there may be a, new, much easier way to edit these settings in the near future.  If I were you, I would keep an eye on your favorite CRM blog for more information in the near future! If you want to be kept up to date subscribe to the blog and it will be sure to email you when we post something.

Q:  I’m a developer or admin and need to extend CRM, I want to use this to be used in my custom queries, where can I use the new isQuickFindFields property? 
A:More great news!  Custom fetch reports can use this fetchXml isQuickFindFields property setting, it can also be used for any fetch statements you’re executing from code. Also, if you have a QueryExpression (in managed code, plugins, etc) you can set the “isQuickFindFields” property on the FilterExpression – be sure to use the latest SDK libraries for managed code scenarios as these will expose the new property.  This query change is not used when querying via the REST endpoint.

Thanks everyone!

Sean

UR12 improves onchange event behavior of checkbox control

$
0
0

Raise your hand if you've formatted a two-option field on a Dynamics CRM entity form as a checkbox. Keep it raised if you've implemented client-side form logic triggered by changes to that field. Now, start waving your hand wildly if you've overridden the onclick event to invoke your logic immediately rather than wait for control focus to change. If, like me, you're starting to attract attention, keep reading (and please, put your arm down).

Adding client-side event handlers to the onclick event of checkbox controls on entity forms is an unsupported customization that has been perpetrated across many versions of Dynamics CRM. The technique serves as a workaround to the native onchange event behavior of the two-option (Boolean) field when rendered as a checkbox control. Native behavior dictates that handler(s) are not fired until after the control loses focus. This behavior can create an odd user experience when onchange logic should be invoked directly after the user action (i.e. conditionally display/enable a related form control). The only alternative to the unsupported workaround is to render the field as a radio button control which may not provide the desired user experience.

Until recently, I identified this unsupported customization in Code Review reports, but lowered the severity based on risk level and the lack of supported alternatives. That is until I discovered a minor change in Update Rollup 12. As of the UR12 release, the two-option (Boolean) field's onchange event now occurs immediately when formatted as a checkbox control. Say what!?! This is a change that I (and many others) have been advocating for years. Like me, you may have initially overlooked it in the SDK release notes (V5.0.15) because it's only referenced as a general documentation update to the onchange event. Either way, I'll take it. One caveat: the behavior isn't supported by Internet Explorer 7 or 8. For these versions, the control reverts to prior behavior based on focus change.

Don't believe me? Read about it here. Celebrate briefly (quietly). Update CRM to UR12 (or later). Upgrade your browser to IE9 (or later). Finally, clean up your script libraries that register handlers with CRM field onclick events. As for me, gone are the days of sugar coating the severity of this violation in future Code Review reports. No excuses, no exceptions!

Austin Jones

Microsoft Premier Field Engineer

Dynamic Activity Reporting using FetchXML

$
0
0

In a previous post I wrote about some of the differences and limitations around custom reporting in Microsoft Dynamics CRM, specifically of using FetchXML vs. the SQL Filtered Views. Because CRM Online is limited to the use of FetchXML, I have seen many of our online customers run into issues with activity reporting. There are out of the box reports available but do not allow flexibility when it comes to customizing them to fit the specific customer’s needs. Because of this limitation when one of my customers had the requirement to be able to run a report out of CRM that returned all activities that were “Set Regarding” an Account or their related Opportunities and/or Contacts it required a deeper dive into the capabilities of activity reporting using FetchXML. As I was developing this report I wasn’t able to find a lot of comparisons so I thought I would share what I did.

Through a few different iterations we were able to develop a custom activity report, using FetchXML that allows them to run an activity summary for selected Account or that returns activities that are set regarding either an account or that related accounts contacts or opportunities (@Accountid) and also filters based on these other parameters:

Parameter

Field

@Accountid

Regardingobjectid

@EventDateFrom

Scheduledend

@EventDateTo

Scheduledend

@ActivityType

Activitytypecode

@Status

Statecode

 

By using the link-type='outer' I was able to return the data I needed including custom columns from the phonecall and appointment entity. Note: performance should be considered when utilizing the outer link-type, for this particular customer they were okay with the fact that performance of the report may be impacted because their business need for this information is so high, they also put heavy restriction on who can run the report and the time of day that the report is run.

The query I used is:

<fetch version="1.0" output-format="xml-platform" mapping="logical"
       distinct="false">
  <entity name="activitypointer">
    <attribute name="subject" />
    <attribute name="ownerid" />
    <attribute name="regardingobjectid" />
    <attribute name="activitytypecode" />
    <attribute name="statecode" />
    <attribute name="scheduledstart" />
    <attribute name="scheduledend" />
    <attribute name="activityid" />
    <attribute name="description" />
    <attribute name="createdon" />
    <attribute name="createdby" />
    <attribute name="actualstart" />
    <attribute name="actualend" />
    <order attribute="modifiedon" descending="false" />
    <filter type="and">
      <condition attribute="regardingobjectid" operator="not-null" />
      <condition attribute="isregularactivity" operator="eq" value="1" />
      <condition attribute="statecode" operator="in" value="@Status" />
      <condition attribute="activitytypecode" operator="in" 
                 value="@ActivityType" />
      <filter type="and">
        <condition attribute="scheduledend" operator="on-or-after"
                   value="@EventDateFrom"/>
        <condition attribute="scheduledend" operator="on-or-before"
                   value="@EventDateTo"/>
      </filter>
    </filter>
    <link-entity name="opportunity" from="opportunityid" to="regardingobjectid"
                 alias="opp" link-type="outer">
      <attribute name="opportunityid" />
      <attribute name="customerid" />
      <link-entity name="account" from="accountid" to="customerid"
                   alias="opportunityaccount" link-type="outer" >
        <attribute name="accountid" />
        <attribute name="territoryid" />
        <filter type="and">
          <condition attribute="accountid" operator="in" value="@account" />
        </filter>
      </link-entity>
      <filter type="and">
        <condition attribute="accountid" operator="in" value="@account" />
      </filter>
    </link-entity>
    <link-entity name="contact" from="contactid" to="regardingobjectid"
                 alias="cont" link-type="outer">
      <attribute name="contactid" />
      <attribute name="parentcustomerid" />
      <link-entity name="account" from="accountid" to="parentcustomerid"
                   alias="contactaccount" link-type="outer" >
        <attribute name="accountid" />
        <attribute name="territoryid" />
        <filter type="and">
          <condition attribute="accountid" operator="in" value="@account" />
        </filter>
      </link-entity>
      <filter type="and">
        <condition attribute="accountid" operator="in" value="@account" />
      </filter>
    </link-entity>
    <link-entity name="account" from="accountid" to="regardingobjectid"
                 alias="acct" link-type="outer">
      <attribute name="accountid" />
      <attribute name="territoryid" />
      <attribute name="name" />
      <filter type="and">
        <condition attribute="accountid" operator="in" value="@account" />
      </filter>
    </link-entity>
    <link-entity name="appointment" from="activityid" to="activityid"
                 alias="appt" link-type="outer">
      <attribute name="activityid" />
      <attribute name="new_appointmenttype" />
      <attribute name="ownerid" />
      <filter type="and">
        <condition attribute="regardingobjectid" operator="not-null" />
        <filter type="and">
          <condition attribute="scheduledend" operator="on-or-after"
                     value="@EventDateFrom"/>
          <condition attribute="scheduledend" operator="on-or-before"
                     value="@EventDateTo"/>
        </filter>
      </filter>
    </link-entity>
    <link-entity name="phonecall" from="activityid" to="activityid"
                 alias="phone" link-type="outer">
      <attribute name="activityid" />
      <attribute name="new_phonetype" />
      <attribute name="ownerid" />
      <filter type="and">
        <condition attribute="regardingobjectid" operator="not-null" />
        <filter type="and">
          <condition attribute="scheduledend" operator="on-or-after"
                     value="@EventDateFrom"/>
          <condition attribute="scheduledend" operator="on-or-before"
                     value="@EventDateTo"/>
        </filter>
      </filter>
    </link-entity>
  </entity>
</fetch>
I was then able to use a table in SQL Server data tools (A.K.A. BIDS) report builder to group and format the data in the way the customer had requested.

 

 

Hope this was helpful! For additional information on FetchXML performance, specifically using the isquickfindfields function see my fellow PFE Sean McNellis’s blog post here: Take advantage of better query performance.

If you are interested, our PFE team is ready to help you with this, we can assist with query examples and various other engagements to help you improve your CRM reports and performance. In addition, we have many other services we offer such as reporting workshops, developer training, admin workshops, and code reviews.  If you would like to have another Microsoft PFE or I visit your company and assist with the ideas presented on our blog, contact your Microsoft Premier Technical Account Manager (TAM) for booking information.  For more information about becoming a Microsoft Premier Customer email PremSale@microsoft.com.

Thanks!

Sarah Champ

Microsoft Premier Field Engineer

Azure Mobile + JavaScript + WebResources = Easy Editing of OrgDBOrgSettings in Dynamics CRM 2011!

$
0
0

Project and Download URL: http://orgDbOrgSettings.codeplex.com

What are orgDbOrgSettings you ask? They work similar to registry settings but they’re stored in the CRM database instead of in a given servers registry.  OrgDbOrgSettings control behaviors and various other CRM system settings and have been added over various releases and will continue to be added as needed.  And customers may edit these when they want to optimize/tailor the experience based on specific requirements. As you may know, there is an existing command line tool referred to in the OrgDbOrgSettings KB: KB2691237, this existing command line tool can be used for all types of CRM Customers but requires extensive configuration.  If you’ve run the command line tool you’ll understand the desire for something having something with far fewer configuration requirements.  

The idea for the project came several months ago when I was prototyping various uses of CRM’s OData/REST endpoint and discovered a plethora of accessible entities that could be very useful including the “Organization” entity.  Using this prototype I added on more sample code and eventually had an HTML webresource that can be published CRM for editing OrgDbOrgSettings.  A few folks from the CRM Support team tested and gave feedback along with a few partners, after making some changes based on their feedback I now have something I consider “ready for use” and this is what it looks like:

 image_thumb4

The idea was to make it straightforward and simple given the time I had.  This project has taken place over many weeks and includes many different samples and concepts and I’ll admin the code isn’t as “neat” and clean as I would like it to be but, frankly speaking, I’m not sure if code is ever clean or neat enough to share with the “community” at large Smile.  In either case the time has come to get this out and let folks use it and give feedback.  First, I want to say that you should only really edit these settings when you have a specific reason to do so – a couple of the more advanced settings should also be tested or set with guidance of other KB articles or support engineers.  I can cover these settings and why you should be using them instead of the registry in a later blog post if there’s interest, but for now I’m sure you’re thinking: how exactly does it work?  And where can I get it?  You can download it here, and for those who are curious read on to learn more.

Technical Details: The utility is simple in concept, there’s an XML file describing all the various orgDbOrgSettings and there’s an HTML file that uses JavaScript (along with JSON & JQuery) to parse the information and display it in a table.  When you initially add any given setting to your organization, it will insert the setting with it’s default value into the “orgDBOrgSettings” attribute on the “Organization” entity using CRM’s REST endpoint.  And when you edit a setting value it will update that same value via the REST endpoint.  If you look at the HTML page source you’ll find a thousand or so lines of HTML & Javascript, the majority of which is: validation helpers, formatting helpers, custom “classes”, and prototype methods to parse and handle BuildNumbers and orgSettings as they are read from the settings XML file and from CRM.

But there’s more, if you’re accessing this page from a modern browser and computer connected to the internet, it will also call out to AzureMobile services and retrieve the latest build version number. When I publish an update you’ll get a message in the settings editor from AzureMobile telling you there’s an updated version along with a URL. It’s important to keep this updated as new settings get released in update rollups.  To update in the utility, click the link to download and save the solution, click another link to launch CRM’s import wizard, import the solution, and press F5 to refresh the solution window and you’ll have the latest update with the newest settings! For those curious about how the caching and callbacks to Azure work, the editor will only call back to Azure once every 7 days.  This timeframe is stored using HTML5 localStorage and will reset under a couple different conditions (localStorage is available in all modern browsers and IE8, more info on localStorage can be found here) .  And for those concerned about the amount of data stored there, I’m currently storing three values, all of which contain a very small amount of string data. 

I have had a lot questions recently around extending CRM interacting with other services (odata/rest) residing in different domains – these requests and communications are commonly referred to as a Cross Domain Requests or XDR’s.  Generally, the answer to any cross domain communication from the browser is to use Cross Origin Resource Sharing (CORS) along with XDR’s (XDR’s are partially supported in IE8, more standardized partial support is in IE9, and full support in IE10).  And if you’re you look for a very easy way to create a REST endpoint that supports CORS for XDR’s - AzureMobile supports the configuration right in the dashboard and thus allows JavaScript to call back into Azure using OData without having to sacrifice browser security – reducing browser security settings should not be taken lightly nor done as a ‘simple' solution or ‘workaround’.  If you’re working on a project and are finding the need to add sites to the trusted zone so you can Disable XDR checks – please stop and investigate the use of CORS, your clients and users will thank you for the reduced complexity and increased security of the solution.

I hope you find the Org Settings Utility to be useful and it should save you some time as your configuring, implementing , and deploying CRM.  And if you’re building mobile apps you should look at leverage AzureMobile.  As always I appreciate the constructive feedback of the community and look forward to hearing from you!

Sean McNellis

 

PS: For those who are interested in how AzureMobile works, setting up the service and connecting via JavaScript for this project took no more than 45 minutes and if you’re looking for easy support of CORS/XDR’s, writing a mobile app for Windows8, Windows Phone8, iOS, or Android you absolutely must look at Azure Mobile! Oh, as if this wasn’t enough – AzureMobile also natively supports logins for MicrosoftID, Facebook, Google, and more to come.  I certainly intend to write a blog post about my experience with this as well as provide some kind of blog video / podcast that will cover how I used Azure Mobile as well as show off some of the other very cool and easy to use features for mobile apps like Identity, Push Notifications, etc – I was amazed at the functionality as well as how easy it is to implement (Azure Mobile Services and the AzureMobile Preview Signup URL). Also, what I just referred to only scratches the surface of what you can do – for some interactive videos check these out: https://channel9.msdn.com/Series/Windows-Azure-Mobile-Services

Dynamics CRM 2013 – formerly codename: “Orion”

$
0
0

If you haven’t heard yet, there have been some recent disclosures in the Dynamics CRM world – you may recall the next version of Dynamics CRM was code named Orion – it now has officially been named “Dynamics CRM 2013.”  So, you want to know all the juicy details on CRM 2013?  Stay tuned, we’ll post pointers to new information as it becomes available – but for now here are some tidbits:

PR & Vision (higher level but informative – screenshots as well)

Technical information:

 

Thanks for reading!

Sean McNellis

Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 14

$
0
0

We're proud to announce that all packages for Microsoft Dynamics CRM 2011 Update Rollup 14 were released on Thursday, July 11th, 2013 to the Microsoft Download Center!  The Update Rollup 14 packages should appear on Microsoft Update on or about July 23rd, 2013.

Update Rollup 14 Build number:

5.0.9690.3557

Update Rollup 14 Microsoft Download Center page

Here's the "Master" Microsoft Dynamics Knowledge Base article for Update Rollup 14: (KB 2849744). Going forward, the plan is for the Master Knowledge Base article for CRM 2011 Update Rollups to be published a bit in advance of release to aid planning.

On Friday, July 12th, 2013 Greg Nichols and Ryan Anderson from the Microsoft Premier Field Engineering provided information about:

  • The release of Update Rollup 14 for Microsoft Dynamics CRM 2011
  • New fixes made available In Update Rollup 14
  • Collateral available about Update Rollup 14 and CRM Update Rollups in general
  • The upcoming release of Microsoft Dynamics CRM 2013, codenamed "Orion"

at 9 AM Pacific time on BlogTalkRadio during their Microsoft Dynamics CRM 2011 Update Rollup 14 Podcast.

Note regarding Podcasts: You can make our CRM Premier Field Engineering podcasts available on Zune by using the RSS feed below.  In the Zune software, go to Collection -> Podcasts and click on the Add a Podcast button on the lower left, then enter the url for the RSS feed: http://www.blogtalkradio.com/pfedynamics.rss. After that, you can adjust the series settings like any other podcast, so you can sync with your smartphone or Zune.

 

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"

Update Rollup 14 news!

Unlike some earlier Update Rollup releases like Update Rollup 6 and 12, Update Rollup 14 does not add major functionality changes. It 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. No new support for the technology stack that CRM 2011 relies upon was added via Update Rollup 14, but as per the Microsoft Dynamics CRM Compatibility List Update Rollup 13 provided support for:

Note: to install Microsoft Dynamics CRM on a server running Windows Server 2012, you must install the latest SHS (Self-Healing Setup) package hosted on the Microsoft Update site when you are prompted to "update install files" during CRM setup. This SHS package is also needed for upgrading a Windows Server to Windows Server 2013 when CRM 2011 is already installed.  For more details on the last scenario, see:

How to upgrade a Microsoft Dynamics CRM Server application to Windows Server 2012

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

  • UR12 includes 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 sdktoolsdevelopertoolkit folder
  • Microsoft Dynamics CRM 2011 Software Development Kit (SDK) updated for Update Rollup 12 (version 5.0.13)
  • 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 this year's 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_MACHINESOFTWAREMicrosoftMSCRM) 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 will appear in the MSDN version of this whitepaper as quickly as possible.

 

NEW RELEASE REGARDING OrgDbOrgSettings!

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 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.

Thanks, Sean!

 

General Update Rollup Notes:

  • Testing Update Rollups: Best Practices
    • Premier Field Engineering recommends treating Update Rollup 12 testing like to 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 Custom Code Validation Tool
    • Consider familiarizing yourselves with this tool… though the download page mentions Update Rollup 9, it hasn’t had much utility until now since the UR9 changes mentioned in the summary below were never released until UR12:
      • Microsoft Dynamics CRM 2011 Custom Code Validation Tool
      • 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 14 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 En

Microsoft Dynamics CRM / Dynamics 365 Updates: Release Dates, Build Numbers, and Collateral

$
0
0

Note: The Updates documented in this blog for:

update the Dynamics CRM components described in this Microsoft Knowledge base article:

Microsoft Dynamics CRM Installations, Updates and Documentation

Notes:

New naming conventions for Microsoft Dynamics CRM updates explained HERE

Microsoft Dynamics CRM Stack Technology Compatibility: Do you want to know if certain Service Packs or versions of a Microsoft product or technology are supported with Dynamics CRM? If so, consult the Microsoft Dynamics CRM Compatibility List. For example, you can use this KB to determine the latest Microsoft SQL Server major version and Service Pack that is supported. Microsoft will list new products like Internet Explorer 11 and Windows 8.1 as "TBD" until testing is complete; generally near General Availability (GA) of that product.

Dynamics CRM Organization Settings Editor (OrgDbOrgSettings)!

You may be familiar with the OrgDbOrgSettings command line tool 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 .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.

The Microsoft Dynamics PFE team has another option for you; the "Dynamics CRM Organization Settings Editor." CRM Senior PFE Sean McNellis developed this managed solution which provides an easy-to-use GUI with which you can configure all of the options outlined in the Knowledge Base on a per-tenant basis. 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 to share more details on the tool, and he keeps the tool update as needed. Thanks, Sean!

>===============================================================

Microsoft Dynamics 365 (v9.X)

Dynamics 365 CE RTM ("Release to Manufacture") build is 9.0.2.3034

Dynamics 365 v9.X Update #

Release date and Download Center URL

Release date – Microsoft Update

Build number

Knowledge Base article

PFE Blog

PFE Podcast

0.2.3034

12/5/2018

n/a

9.0.2.3034 - Only Server package available

4344184

n/a

n/a

0.2.3034

12/5/2018

n/a

9.0.2.3034 - Supported Component Downloads:

Dynamics 365 for Outlook, version 9.0 (Outlook client)

Dynamics 365, version 9.0 Email Router

Dynamics 365, version 9.0 Report Authoring Extension (with SQL Server Data Tools support)

Dynamics 365, version 9.0 Language Packs

4344184

n/a

n/a

1.0

3/7/2019

n/a

9.1.0.1511 - Only Dynamics for Outlook package available

4491851

n/a

n/a

 

Microsoft Dynamics CRM 2016 / Microsoft Dynamics 365 (v8.X)

CRM 2016 RTM ("Release to Manufacture") build is 8.0.0.1088

CRM 2016 / Dynamics 365 Update #

Release date and Download Center URL

Release date – Microsoft Update

Build number

Knowledge Base article

PFE Blog

PFE Podcast

0.1

2/21/2016

3/14/2016

8.0.1.79

3133963

Blog

Podcast

Bing Maps AJAX Upgrade for Dynamics CRM 2016 0.1

8/21/2017

n/a

8.0.1.136 - cumulative update containing fixes between build 80 and 136. Only Server package available

4038205

n/a

Podcast

1.0

5/23/2016

6/24/2016

8.1.0.359

3154952

Blog

Podcast

1.0 Outlook Client re-release

9/21/2016

12/2/2016

8.1.0.371 packages for Outlook Client (32-and 64-bit) ONLY re-released, please discard build .359 Client packages

3154952

Blog

Podcast

Microsoft Dynamics CRM 2016 Service Pack 1.1 (on-premises)

5/17/2017

TBD

8.1.1.1005

3203310

Blog

Podcast

Bing Maps AJAX Upgrade for Dynamics CRM 2016 1.1

8/11/2017

n/a

8.1.1.1100 - cumulative update containing fixes between build 1106 and 1100. Only Server package available

4038205

n/a

Podcast

2.0 (December 2016 Update for Dynamics 365)

12/16/2016

3/28/2017

8.2.0.749

3205084

Blog

Podcast

Microsoft Dynamics 365 (on-premises) Update 2.1

4/27/2017

6/15/2017

8.2.1.176

4013759

Blog

Podcast

Bing Maps AJAX Upgrade for Dynamics 365 (Update 2.1)

8/14/2017

n/a

8.2.1.342 - cumulative update containing fixes between build 176 and 342. Only Server package available

4038205

n/a

Podcast

Microsoft Dynamics 365 (on-premises) Update 2.2

10/26/2017

TBD

8.2.2.112 - All packages available

4046795

Blog

Podcast

Microsoft Dynamics 365 (on-premises) Update 2.3

12/1/2018

TBD

8.2.3.0003 - All packages available

4467675

Blog

Podcast

Microsoft Dynamics 365 (on-premises) Update 2.4

3/18/2019

TBD

8.2.4.6 - All packages available

4490601

Blog

Podcast

 

Mainstream Support Lifecycle: Keep in mind that Mainstream Support for Microsoft Dynamics CRM 2016 ends January 12th, 2021 as per CRM 2016’s supported lifecycle.

Go to Top
===============================================================

Microsoft Dynamics CRM 2015

CRM 2015 RTM ("Release to Manufacture") build is 7.0.0.3543

CRM 2015 Update #

Release date and Download Center URL

Release date – Microsoft Update

Build number

Knowledge Base article

PFE Blog

PFE Podcast

0.1

4/14/2015

6/23/2015

7.0.1.129

3010990

Blog

Podcast

1.1

9/10/2015

10/7/2015

7.1.1.3113 (Outlook client, MUI, and Email router packages compatible with On-Premise and Online. No Server package for On-Premise)

3072333

Blog

Podcast

1.2

7/18/2016

TBD

7.1.2.1032 (Outlook client, MUI, and Email router packages compatible with On-Premise and Online. No Server package for On-Premise)

3141809

Blog

Podcast

0.2

11/3/2015

n/a

7.0.2.53 (MUI, Email router, CRM Server, SSRS, and Tools packages compatible with On-Premise. No Outlook Client packages shipped with 0.2)

3075889

Blog

Podcast

0.3

8/14/2017

n/a

7.0.3.109

4018584

Blog

Podcast

Bing Maps AJAX Upgrade

8/11/2017

n/a

7.0.3.110 (Server package only available)

4038205

n/a

Podcast

3.2

3/8/2019

n/a

7.0.3.144 (Server package only available)

4490493

n/a

Podcast

 

Mainstream Support Lifecycle: Keep in mind that Mainstream Support for Microsoft Dynamics CRM 2015 ends January 14th, 2020 as per CRM 2015’s supported lifecycle.

Go to Top
===============================================================

Microsoft Dynamics CRM 2013

CRM 2013 pre-release builds

Build number

Knowledge Base article

Beta

6.0.00215

n/a

RC

6.0.0.514

n/a

RTM

6.0.0.809

n/a

CRM 2013 Update Rollup #

Release date and Download Center URL

Release date – Microsoft Update

Build number

Knowledge Base article

PFE Blog

PFE Podcast

1

12/16/2013

1/2014

6.0.1.61

2891271

Blog

Podcast

2

3/22/2014

4/8/2014

6.0.2.46, 6.0.2.51 (Server-only re-release)

2919956

Blog

Podcast

3

7/15/2014

7/21/2014

6.0.3.106

2930480

Blog

Podcast

CRM 2013 Service Pack

Release date and Download Center URL

Release date – Microsoft Update

Build number

Knowledge Base article

PFE Blog

PFE Podcast

1

5/27/2014

7/21/2014

6.1.0.581

2941390

Blog

Podcast

CRM 2013 Service Pack 1 Update Rollup #

Release date and Download Center URL

Release date – Microsoft Update

Build number

Knowledge Base article

PFE Blog

PFE Podcast

1

9/23/2014

10/14/2014

6.1.1.132

2953252

Blog

Podcast

2

2/6/2015

2/19/2015

6.1.2.112

2963850

Blog

Podcast

3

4/16/2015

5/12/2015

6.1.3.119

3016464

Blog

Podcast

4

2/22/2016

5/23/2016

6.1.4.145

3122951

Blog

Podcast

Bing Maps AJAX Upgrade for CRM 2013 SP1 UR4

8/11/2017

n/a

6.1.4.244 - cumulative update containing fixes between build 146 and 244. Only Server package available

4038205

n/a

Podcast

5

10/11/2017

tbd

6.1.5.111

4018582

tbd

Podcast

 

Mainstream Support Lifecycle: Keep in mind that Mainstream Support for Microsoft Dynamics CRM 2013 ends January 8th, 2019 as per CRM 2013’s supported lifecycle.

Go to Top

===============================================================

Microsoft Dynamics CRM 2011

CRM 2011 pre-release builds

Build number

Knowledge Base article

Beta

5.0.9585.101

n/a

RC

5.0.9688.53

n/a

RTM

5.0.9688.583

2461082

CRM 2011 UR #

Release date and Download Center URL

Release date – Microsoft Update

Build number

Knowledge Base article

PFE Blog

PFE Podcast

1

4/4/2011

4/26/2011

5.0.9688.1045

2466084

Blog

Podcast

2

6/6/2011

6/28/2011

5.0.9688.1155, 5.0.9688.1157 (server)

2466086

Blog

Podcast

3

7/26/2011

8/23/2011

5.0.9688.1244

2547347

Blog

Podcast

4

9/22/2011

Was not released to Microsoft Update

5.0.9688.1450

2556167

Blog

Podcast

5

10/25/2011

11/8/2011

5.0.9688.1533

2567454

Blog

Podcast

6

1/12/2012

1/24/2012

5.0.9690.1992 (contains the Q4 2011 Service Release and provides limited SQL 2012 support)

2600640

Blog

Podcast

7

3/22/2012

3/27/2012

5.0.9690.2165

2600643

Blog

Podcast

8

5/3/2012

5/22/2012

5.0.9690.2243

2600644

Blog

Podcast

9

Not released publically

n/a

n/a

n/a

n/a

n/a

10

8/16/2012

n/a

5.0.9690.2720

2710577

Blog

Podcast

10 re-release

10/4/2012

n/a

5.0.9690.2740

2710577

Blog

Podcast

11

10/11/2012

n/a

5.0.9690.2835

2739504

Blog

Podcast

11 re-release

10/15/2012 (client), 10/22/2012 (server)

10/23/2012

5.0.9690.2838 (Client), 5.0.9690.2839 (Server)

2739504

n/a

n/a

11 Critical Update

7/26/2013

8/13/2013

5.0.9690.2903 (Client, Server, MUI),

2855319

Blog

n/a

12

1/29/2013

1/6/2013 (except for Server)

5.0.9690.3233 (Client), 5.0.9690.3236 (Server)

2795627

Blog

Podcast

13

3/27/2013

4/8/2013

5.0.9690.3448

2791312

Blog

Podcast

14

7/11/2013

7/23/2013

5.0.9690.3557

2849744

Blog

Podcast

15

10/7/2013

10/2013

5.0.9690.3731, 5.0.9690.3739 (V2 - Outlook Client only re-release)

2843571

Blog

Podcast

16

1/22/2014

2/2014

5.0.9690.3911

2872369

Blog

Podcast

17

5/8/2014

5/23/2014

5.0.9690.4150

2915687

Blog

Podcast

18

9/24/2014

10/14/2014

5.0.9690.4376

2958724

Blog

Podcast

18.1

10/19/2016

See note directly below

n/a

5.0.9690.4439

3179593

N/A

N/A

CRM 2011 UR #

Release date and Download Center URL

Release date – Microsoft Update

Build number

Knowledge Base article

PFE Blog

PFE Podcast

 

Mainstream Support for Microsoft Dynamics CRM 2011 ended July 12th, 2016 as per CRM 2011’s supported lifecycle.

CRM 2011 Update Rollup 18.1 (Update for Microsoft Dynamics CRM 2011) will be the final Update for Microsoft Dynamics CRM 2011. There are no plans to release an Update Rollup 19 for CRM 2011.
Support for .NET 4.6 or SQL Server 2014, will not be included for CRM 2011. The Supportability Knowledge Base article has been updated accordingly (https://support.microsoft.com/en-us/kb/3005163)
Per the support lifecycle policy mentioned above, when extended support starts, the only fixes delivered will be security fixes.

Notes:

Mismatched Update Rollup versions within a Microsoft Dynamics CRM 2011 or 2013 deployment: In a scenario where you may be running many client workstations with Microsoft Dynamics CRM 2011 or 2013 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 2011 Server but the Outlook clients are still on Update Rollup 1, or where Update Rollup 1 is on the CRM 2011 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. 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 or 2013 Email Router or Microsoft Dynamics CRM 2011 2013 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.

See: Mismatched Update Rollup versions within a Microsoft Dynamics CRM 2011 deployment and "User experience while accessing CRM 2011 application servers while Update Rollups are being applied"

Silent Update Rollup installs: Please review 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

See also: Customers' choices... The most popular "Dynamics CRM in the Field" technical blog posts from Premier Field Engineering!

Ryan Anderson, Greg Nichols (retired), Walter Carlin
Senior Premier Field Engineer
Microsoft Corporation


CRMInTheField articles now available in Japanese!

$
0
0

Looking for CRMInTheField articles in Japanese?  If so, I have great news for you!  A friend and colleague, Kenichiro Nakamura, has been translating many of our CRMInTheField articles in Japanese.  Ken has been supporting CRM at Microsoft for quite a while now and is an Escalation Engineer on the Asia Pacific CRM Support Team .  If you read Japanese or know any CRM admin’s that do send them Ken’s way: http://blogs.msdn.com/crmjapan

image

Thanks Ken!

Sean

Defer Database Updates Installing CRM 2011 Update Rollups

$
0
0

Calling all CRM admins – here’s a tip you’ll want to bookmark for your next round of update rollups.  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.  Additionally, if your environment is highly operationalized, 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 proc’s, udf’s, 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 (likewise this allows you to retry database updates if they timeout or do not complete without jeopardizing the installation binary updates).

To accommodate this a new deployment property was added in Dynamics CRM 2011, I’ve been unable to narrow down the exact build in which this feature was applied but I’ve successfully tested it back to Update Rollup 6 (which should cover most).  Below you’ll find the instructions for how to enable this helpful feature. 

Values for the AutomaticallyInstallDatabaseUpdates Deployment setting:
True (default): during the update rollup execution the files will be upgraded on the server and additionally each DB will be updated  The update rollup will upgrade the CRM files, the DB updates are staged, then each org DB is updated to the update rollup version you’re installing, once completed you will see a success / finish screen as part of the installation. 

False: during the update rollup execution the CRM files are upgraded, the DB updates are staged, once completed you will see a success / finish screen as part of the installation.  The DB updates now must be manually applied to each organization, which is done by opening deployment manager, finding the organization you wish to update, right-clicking the organization, then selecting “update”. When you select update all the db updates that would normally be executed in the update rollup are now applied – this could include updates of UDF’s, Stored Procs, underlying schema changes, index updates, etc.  This event of applying updates should be considered maintenance as the organization may behave as if it’s “offline” and users updating data could potentially block the update installation.

So, now that we have that out of the way here’s all you need to know on how to check this value and how to update it, if you wish to change it. 

PowerShell Script to get the current value (default is true):

Add-PSSnapin Microsoft.Crm.PowerShell 
(get-CrmAdvancedSetting -ConfigurationEntityName "Deployment" -Setting "AutomaticallyInstallDatabaseUpdates").Attributes

PowerShell Script to postpone DB updates on installation*

Add-PSSnapin Microsoft.Crm.PowerShell
$setting= New-Object "Microsoft.Xrm.Sdk.Deployment.ConfigurationEntity"
$setting.LogicalName = "Deployment"
$setting.Attributes = New-Object "Microsoft.Xrm.Sdk.Deployment.AttributeCollection"
$keypair = New-Object "System.Collections.Generic.KeyValuePair[String, Object]" ("AutomaticallyInstallDatabaseUpdates", $false)
$setting.Attributes.Add($keypair)
Set-CrmAdvancedSetting -Entity $setting

*NOTE: When you defer updates you will have to update the organizations using Deployment Manager.

I hope you find this simple setting change as helpful as our team does, again while it doesn’t change the fact certain updates must be applied as part of update rollups this allows for the separation of the app and the DB updates which can also help make troubleshooting easier.  In the worse case scenarios org DB’s could be left at a lower patch level for short periods of time if you need to wait for another maintenance window or stage org DB updates over a succession of nights in the case where you have numerous CRM organizations. 

Feel free to reach out with questions, if you would like someone from our team to host a deep dive on this, facilitate a chalk talk about updates in general, or come onsite and work side-by-side with you on this or other topics please reach out to your TAM and ask them to put in a request – we’d be happy to help!

Sean McNellis

Premier Field Engineer

CRM Sandbox Plugin Issues fixed in .NET 4.0 KB 2872041

$
0
0

NOTE: This blog was updated on 7/25/2012: As some of you commented the binaries were missing from the KB article posted, the patches are now available for download within the KB apologies for any confusion around this. Adds/changes are highlighted below. 


On July 9th, 2013 the .NET team released a Critical Security Patch (KB 2840628) that was release to mitigate identified security risks in .NET Framework Version 4.0.  After applying this critical update customers using partial trust experienced issues including Dynamics CRM customers running sandbox plug-ins.  The issue was limited to the use of specific methods within the System.Diagnostics namespace, which are also commonly used in Dynamics CRM sandbox plugins.  The .NET team working with the CRM Support team has identified the source of the problem and is working on a long term solution to address this specific problem with Partial Trust Code, which includes Dynamics CRM Customers using sandbox plugins.  The following article documents the known workarounds and also provides patches to fix these documented symptoms: http://support.microsoft.com/kb/2872041

If you are using CRM plug-ins registered in sandbox mode (or running other custom partial trust code) you may be experiencing the exception below. If you are seeing the below error message, please use the workaround or install the patches listed in KB 2872041 to temporarily resolve the issue and stay posted for a longer term fix.

System.MethodAccessException: Attempt by method ‘System.Configuration.TypeUtil.CreateInstanceRestricted(System.Type, System.Type)’ to access method ‘System.Diagnostics.AssertSection..ctor()’ failed.

NOTE: This only applies to .NET Framework 4.0, there has been no reported issues with .NET Framework 4.5.

If you are still encountering this message after installing the patches please open a support case so the support team can help you troubleshoot further.

Thanks!

Sean McNellis
Premier Field Engineer

This is also documented on the Dynamics CRM Support Team blog:  https://community.dynamics.com/crm/b/dynamicscrmsupportblog/archive/2013/07/22/release-of-critical-update-for-net-4-0-framework.aspx

Dynamics CRM 2011 UR11 Critical Update: What you need to know

$
0
0

On July 27th, 2013 the Dynamics CRM team released a critical update for CRM 2011 targeted on the Update Rollup 11 codebase. The critical update can be downloaded here: http://www.microsoft.com/en-us/download/details.aspx?id=39691 and the KB article for it is found here: http://support.microsoft.com/kb/2855319NOTE: Below the “KB2855319 Critical Update” will be referred to as “CU” and “Dynamics CRM 2011 Outlook Client Add-In” will be referred to as “Outlook Client” for consistency and readability.  Please also note, this article discusses both the Server and Outlook Client CU patch files, there are valid scenarios where your client and server versions do not match. As a general rule of thumb the following best practices apply:

  • If you are unable to patch your server to UR12 or higher due to compatibility concerns it is recommended to patch to at least UR11, I would strongly encourage you to consider installing this CU instead of UR11 (the CU is essentially UR11 with several updates highlighted at the bottom of the article).  Ultimately, you should have a plan to update your server to the newer update rollups and eventually to UR15 or higher.
  • If your server is on UR12, 13, or 14 – it’s encouraged to stay on your current rollup and plan to patch to UR15 when it releases.

Notable points regarding this CU:

  • The Server CU can be installed by customers who wish to have the latest server updates without going to UR12 or higher. If your server version is less than UR11 you must first update to UR11 then apply this CU on top of UR11. If your server version is less than UR11 and you apply this CU, it will bring your server build up to the equivalent of UR11 and will include the fixes in this CU.
  • The Outlook Client CU can be installed by any customers who wish to have improved stability and performance in the Outlook Client today – these enhancements and others will be included in UR15 for the Outlook Client and this CU offers a stop gap if you’re experiencing problems today.
  • The Outlook Client & Server CU cannot be applied on top of Update Rollup 12, 13, or 14, if you attempt to do so a message is displayed that states that this update rollup is not compatible with your installation.
  • The Outlook Client & Server CU version number is: 05.00.9690.2903
  • If you apply the Outlook Client CU, wait to apply any further update rollups until Update Rollup 15 has been released. This will preserve the existing stability and performance enhancements – from an Outlook Client standpoint you can deploy UR15 on top of this UR11 CU without compatibility concerns.
  • If you wish to have your Outlook Clients use this CU, the CRM server may be at UR level: 11*, 12, 13, 14, or CRM Online
    • *If your server is currently patched to Update Rollup 11 – it is highly recommended you install the latest CRM Server update as part of this CU (file name: CRM2011-Server-KB2855319-ENU-amd64.exe)

CU installation considerations and notable post-installation changes:

  • The CU patches are based on the Update Rollup 11 codebase, thus when you install the CRM Outlook Client CU your client version *must* be update rollup 11 or less.
  • If your outlook client is already past update rollup 11, (greater than or equal to build number 5.0.9690.3233) – you have two options three options:
    1. Uninstall the Outlook Client entirely and re-install with the base UR6 installation (here), once installed you can then apply the CU.
    2. Choose to remain at your current update rollup level and patch your Dynamics CRM 2011 Client with Update Rollup 15 when it releases.
    3. This option is no longer recommended due to issues encountered, please use one of the above two options. Downgrade the Outlook Client by uninstalling any rollups greater than UR11 on the client until it is at UR11 or below, then apply the new CU.
  • Once you apply the CU on your Outlook Client, the next patch you should plan to install is Update Rollup 15 – do not apply any rollups prior to the release of UR15 to preserve the improvements and settings.
  • *UPDATE* 8/14/2013: As of today UR12, UR13, and UR14 have been removed from being listed as an Automatic Update on Windows Update.  This will prevent your users Outlook clients from inadvertently receiving automatic updates which would supersede the CU.  UR 15 will be live on the Windows Update site a short time after it is made available to the public.
  • The SQL Server CE Outlook Client component is automatically upgraded to SQL CE 4.0 as part of the CU installation.  This is pre-packaged and contained within the update.
  • Two recommended registry entries are now automatically added/updated as part of the Outlook Client CU: “AddressBookMaterializedViewsEnabled” and “DisableMapiCaching” both are set to a value of 1.
  • As part of the Outlook Client CU two recommended registry entries have been removed from the registry and are now automatically defaulted as follows: “AddressBookMaterializedViewsEnabled” set to true and “DisableMapiCaching” set to true (when DisableMapiChaching is set to true pinned views in the Outlook Client will be paged instead of an infinite list after this change).
    • NOTE: If you’ve also installed the Server CU these values can now be overridden using the OrgDBSettings Editor (I will be releasing an update to allow UR11 CU customers to edit the settings in their organization).  Any Outlook Clients with the Client CU installed will then use the OrgDbOrgSettings value instead of the default value. 
  • The Outlook Client CU now has process isolation for hosting CRM forms, and the offline Sync process. The processes used for isolation are titled: “Microsoft.Crm.Application.Hoster.exe”, “Microsoft.Crm.Application.Outlook.WebFormsHost.exe”, and “OfflineSyncAgent.exe” and are all launched as child processes of Outlook. If you’re curious what this looks like, here’s a process explorer view of the Outlook.exe process after the CU has been installed and Outlook Client has been configured:
    • image

If you’re a premier customer feel free to talk to your TAM about working with a Dynamics CRM PFE (remote or onsite), and if you already have a Dedicated Dynamics PFE make sure to reach out and we can work together to have a plan to get your customizations and system updated.  If you don’t have Premier and are interested in working with us – please reach out and we can set you up to talk with someone about Premier.

Thanks for reading! 
Sean McNellis
Premier Field Engineer

Script errors when adding documents via the SharePoint integration CRM UR12+

$
0
0

As you may know, Dynamics CRM 2011 has the ability to embed a SharePoint document library within certain record types.  After applying update rollup 12 most of us will likely want to take advantage of the ability to turn off HTC’s and tell Internet Explorer to use a standards based browser mode (look for an article coming soon on turning off HTC’s and IE’s compatibility mode).  However, once you do this you may notice JavaScript errors when interacting with the SharePoint document library integration.  The error I’ve seen so far is: ‘action’ is undefined and will have a URL of: http://servername/org/crmgrid/crmgridpage.aspx

If you’re going to update or already have updated to UR12 or higher, don’t forget to update your SharePoint list components to avoid this issue – for reference here’s how to install this update:

Important note before starting:

  • You must be a SharePoint site collection administrator to be able to install the Microsoft Dynamics CRM List component on Microsoft SharePoint Server.
  • If you’re installing to SharePoint 2013 or SharePoint Online make sure you’re on the latest SharePoint update before adding the new list components.
  • (For SharePoint On-Premises only) The Microsoft Dynamics CRM List component is a site collection-level solution. If you want to enable the Microsoft Dynamics CRM List component at the farm level, you must write a script that does the following:
    • Retrieves all SharePoint site collections from SharePoint server.
    • Installs and activates the List component on each of these site collections.

To install the Microsoft Dynamics CRM List component:

  1. Download the latest SharePoint list component update from the download center: http://www.microsoft.com/en-us/download/details.aspx?id=5283 or search for it here
  2. Navigate to the folder where you downloaded CRM2011-SharePointList-ENU-amd64.exe or CRM2011-SharePointList2013-ENU-amd64.exe, and double-click it.
  3. In the Open File - Security Warning dialog box, click Run.
  4. To accept the license agreement, click Yes.
  5. Select a folder to store the extracted files, and click OK.
    • If you downloaded CRM2011-SharePointList-ENU-amd64.exe, the following files are extracted:
      • AllowHtcExtn.ps1
      • crmlistcomponent.wsp
    • If you downloaded CRM2011-SharePointList2013-ENU-amd64.exe, the following files are exstracted:
      • crmlistcomponent.wsp
  6. Open your web browser
  7. In the address bar, type the URL of the site collection on which you want to install the Microsoft Dynamics CRM List component, and press Enter
  8. Navigate to SharePoint’s Solutions Gallery
    • If you are using SharePoint 2010: click Site Actions, and then click Site Settings, under Galleries, click Solutions
    • If you are using SharePoint 2013:  click the Settings icon in the top-right corner, then click Site Settings, under Web Designer Galleries, click Solutions
  9. On the Solutions tab, in the New group, click Upload Solution.
  10. Click Browse, locate the crmlistcomponent.wsp file, and then click OK.
  11. On the Solutions tab, in the Commands group, click Activate.

Special thanks to Chris Donlan, another Dynamics CRM/SharePoint PFE, who helped document this when customers started to update and find this issue. Feel free to ping us via the “Email Blog Author” link to the right or comment and we’ll get back to you as soon as we can.  If you’re a Premier customer talk to your TAM about working with a Dynamics CRM PFE (remote or onsite), and if you already have a Dedicated Dynamics PFE make sure to reach out.  If you don’t have Premier and are interested in working with us – please reach out and let us know.  Thanks for reading!

Sean McNellis
Premier Field Engineer

Viewing all 393 articles
Browse latest View live


Latest Images

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