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

Microsoft CRM Advanced Find - Powerful Queries through Regarding and Related Records

$
0
0

Our CRM product includes advanced find functionality that allows users to create complex queries in order to return specific datasets.  Once a set of data is isolated, the user can do many different CRM actions.  Several common examples are listed below:

  • Work with the precise set of data in a variety of ways (ex. edit, bulk email, etc.)
  • Export the data to Excel to do further analysis. If the data is exported in a "dynamic" fashion, users can refresh the data within Excel. Many users also use the export to Excel feature in order to create a template to use when importing data in the future.
  • Create a saved view. A saved view allows you to see your queries criteria in a personal view to use in the future. If others would find it useful, then it's very easy to share with other users.

When building advanced find queries, you can work with attributes directly on the entity that you are working with, as well as attributes from, related entities.  These related entities are most commonly linked through the regarding attribute that is displayed on forms.  For example, it's very easy to create an advanced find query on the contact entity that has tasks that contain "Potential Prospect" in the subject line.  As long as the tasks contain the subject and an account in the regarding attribute, the following query would work well:

Image #1

Image #2

I've recently had a request from a customer to assist them in creating an advanced find query that was a bit trickier to construct. 

Issue -

A marketing list consisting of contacts was created and used on a campaign.  CRM letters were created through the campaign as campaign activities.  By accident, the marketing list was deleted.  They later found that they needed the marketing list for future use.  Their hope was to use an advanced find on the contact entity based off letters regarding the campaign activity.  The data looked like this:

Image #3

Image #4

It seemed that this would be an easy query to accomplish.  They assumed that since the letters in question were showing under the related contact's activities, the advanced find listed below would work:

Image #5

The above query actually won't work as the contact isn't technically related to the letter through the regarding attribute.  Microsoft CRM applies special functionality to activities.  If there are CRM records listed as parties (To, Cc, Bcc, Sender, Recipient, etc.) to the activity, the activity will still show up in the related entities activities section.  If you take a look at the letter shown in Image #4, you'll see that it is listed in the activity view of the contact in Image #3.  This is because Jon Doe is listed as the Recipient on the letter.

Resolution -

In order to create an advanced find that returns contacts that are related to activities that are related to a specific campaign activity (wow...that was a mouthful), you must use the Activity Parties (Party) related entity when building the query.  This is necessary because the contact is related to the letter through the activity party, rather than through the regarding attribute.  The screenshots below show the final results:

Image #6

Image #7

Image #8


- Jon Strand

 


Speeding up sluggish CRM reports that use date/time parameters

$
0
0

As many of you may know, when writing custom reports for CRM 4.0 you are required to use the filtered views. The upside is filteredViews make security a snap for reporting against CRM data, and they offer a consistent dataset between the user will see in the CRM UI and what they will see in CRM reports. For instance, when a CRM user has access to CRM data via their role privileges they will see that same data in a report, but if the user doesn't have access to the data in CRM they won't be able to surface that data in a report either. What you may have noticed when writing and running reports against filtered views is a sluggish response when selecting, filtering, or ordering by date/time values in your report. Let's break down what's going on and what you can do about it:

Why is this?

All date/time data in CRM are stored in the database as UTC values. To make sure the times are displayed to users in their local timezone, a SQL User Defined Function (UDF) is used to convert the values from the database tables to local time in the filtered views. When running a query via the filtered views against a large dataset, every record in the dataset must be evaluated by this function to determine the local date/time value, which can add significant overhead to your report.

What can I do about it?

Because all the date/time data values are stored in UTC format, reports that query against the UTC time will circumvent the UDF, and the query time will be reduced. However, this will alter the data returned by the query and could also impact your conditions if the report contains a date/time parameter . The solution we will explore in this article is:

  • Query all date/time data using only the UTC columns
  • Convert any input parameters, or input date/time data from local time to UTC Time, which will make sure we are retrieving the correct data
  • Convert any output data in the SSRS report to display the UTC date/time

How can I take advantage of reporting in UTC without having to teach my users how do timezone conversions?

You can use the same functions that CRM utilizes to convert the date/time values, however, instead of having SQL do this conversion for all the data, we can convert the final dataset making the report run much quicker. The process we're going to use is:

  • When the report is initially loaded we're going to run the query in Fig 1 (at the bottom of this posting) which will retrieve the minutes needed to convert a local time to UTC as well as the minutes needed to convert a UTC time to the users local time. Both of these parameters will be available in the report (@minsFromLocalToUTC and @minsFromUTCToLocal)
  • Any parameters or inputs that will be used in the "Where" condition will be in local datetime format if the user selects them. These must be converted in your SQL query to UTC.
  • Any data outputs will be retrieved in UTC time and must be converted to local time in your SSRS report, using an SSRS expression, so the user see's the date/time value in their local timezone.

Example:

In this sample we have a report that will fetch a list of accounts with the account name, modified date/time, and who modified the record. The user running the report selects a beginning date and ending datetime as a parameter. Your two parameter names in the report are named: "@beginDateTime" and "@endDateTime".



Your current TSQL statement:

  • select name, modifiedbyname , modifiedby, modifiedon, accountid
    from FilteredAccount
    where modifiedon Between @beginDateTime and @endDateTime
    order by modifiedon desc


To convert the report over to using UTC a few modifications need to be done in the report.

  1. Open your report for editing in Visual Studio 2008 Business Intelligence Designer
    • Add a new dataset to retrieve our conversion values:
    • Under the "Report Data" pane right click the "CRM" datasource and select "Add Dataset"

      image

    • In the Dataset properties page:
      • name your new dataset "TimezoneConversions"
      • Keep the "Data Source" value the same (CRM)
      • Select "Text" query type
      • Paste in the query text from Fig 1. (at the bottom of this post)
      • Press the OK button to create the new Dataset which will contain your two conversion values
  2. Add a parameter in your report that contains the minutes required to convert UTC time to local time.
    • Under the "Report Data" pane right click "Parameters" and select "Add Parameter"

      clip_image002

    • In the Report Parameter properties page
      • name your new parameter "MinutesToUTC"
      • Set the prompt to: "MinutesToUTC"
      • Change the DataType value to "Integer"
      • Change the parameter visibility to "Hidden"
      • In the left pane click "Default Values"
      • Change the default value to "Get values from a query"
      • In the dataset drop down select the dataset we created earlier "TimezoneConversions"
      • In the Value field drop down select "ToUTCTime"
      • Press Ok to create your new parameter
  3. Modify your query to query the UTC values instead of the local values
    • Right-click the dataset that contains your account query
    • Change your account query from what it was at the top of the example to:
    • select name, modifiedbyname, modifiedby, modifiedonUTC as modifiedon, accountid
      from FilteredAccount
      where modifiedonUTC Between DateAdd(mi,@MinutesToUTC,@beginDateTime) and DateAdd(mi,@MinutesToUTC,@endDateTime)
      order by modifiedonUTC desc
    • Notice how we've added a "DateAdd" expression. This is going to take the offset to UTC and add it to the users local time parameters so that the query is run in UTC time instead of local. Also, notice how all date/time references now specifically call out UTC - this is important and will also help improve query time. I've also used the alias of 'modifiedOn' for the new modifiedOnUTC value to save the effort of updating the report - anywhere in the report that references modifiedOn will continue to function properly.
    • Important: you should change all date/time references over to UTC and convert them to reap the benefits of this change. If you still have some in the select statement you'll get better performance but not as good as if you removed all local date/time references
    • Now, your "where" condition will be evaluated in UTC time (based on the users local time parameter) and all the data will come back to your report in UTC time.
  4. Add a parameter in your report that contains the minutes required to convert UTC time to local time.
    • Under the "Report Data" pane right click "Parameters" and select "Add Parameter" to open the Report Parameter properties page

      clip_image002

    • In the Report Parameter properties page
      • name your new parameter "MinutesToLocal"
      • Set the prompt to: "MinutesToLocal"
      • Change the DataType value to "Integer"
      • Change the parameter visibility to "Hidden"
      • In the left pane click "Default Values"
      • Change the default value to "Get values from a query"
      • In the dataset drop down select the dataset we created earlier "TimezoneConversions"
      • In the Value field drop down select "ToLocalTime"
      • Press Ok to create your new parameter
    • Modify the output in the report to convert your date/time values to local time from UTC
      • In the output dataset within the report you are going to have SSRS convert the time from the query, which will be in UTC, over to use local time.
      • Find the cell that contains the modifiedOn data and right-click it.
      • Select "Expression" to open the expression editor, notice the value now is =Fields!ModifiedOn
      • Change the expression to read:
      • =DateAdd(DateInterval.Minute,Parameters!MinutesToLocal.Value,Fields!ModifiedOn.Value)
      • This expression will add the time retrieved in our new parameter to the modifiedOnUTC dates, which will convert them to local time.
    • You've now successfully converted your report over to using UTC instead of local times. The measure of success is:
      • Your report values should stay exactly the same as they were prior to the switchover
      • You should notice your report runs quite a bit faster because you are no longer having SQL do all the heavy lifting against the large dataset.

     

    • Note: for this example in a test system I collected some statistics:
      • Before modification: CPU time = 656 ms, duration = 796 ms, reads = 23723
      • After modification: CPU time = 157 ms, duration = 295 ms, reads = 14636
      • Our net improvement, even on a small dataset and simple query was impressive:
        • CPU time was reduced by 499 milliseconds
        • Reads were reduced by 9087
        • Duration was reduced by 501 milliseconds

     

    Fig1. TSQL query to retrieve the current CRM users timezone information

    Select
    DATEDIFF(mi, '1/15/2011 00:00:00.000',
    dbo.fn_UTCToTzSpecificLocalTime(
    '1/15/2011 00:00:00.000',
    us.TimeZoneBias,
    us.TimeZoneDaylightBias,
    us.TimeZoneDaylightYear,
    us.TimeZoneDaylightMonth,
    us.TimeZoneDaylightDay,
    us.TimeZoneDaylightHour,
    us.TimeZoneDaylightMinute,
    us.TimeZoneDaylightSecond,
    0,
    us.TimeZoneDaylightDayOfWeek,
    us.TimeZoneStandardBias,
    us.TimeZoneStandardYear,
    us.TimeZoneStandardMonth,
    us.TimeZoneStandardDay,
    us.TimeZoneStandardHour,
    us.TimeZoneStandardMinute,
    us.TimeZoneStandardSecond,
    0,
    us.TimeZoneStandardDayOfWeek)) as ToLocalTime,
    DATEDIFF(mi, '1/15/2011 00:00:00.000',
    dbo.fn_TzSpecificLocalTimeToUTC(
    '1/15/2011 00:00:00.000',
    us.TimeZoneBias,
    us.TimeZoneDaylightBias,
    us.TimeZoneDaylightYear,
    us.TimeZoneDaylightMonth,
    us.TimeZoneDaylightDay,
    us.TimeZoneDaylightHour,
    us.TimeZoneDaylightMinute,
    us.TimeZoneDaylightSecond,
    0,
    us.TimeZoneDaylightDayOfWeek,
    us.TimeZoneStandardBias,
    us.TimeZoneStandardYear,
    us.TimeZoneStandardMonth,
    us.TimeZoneStandardDay,
    us.TimeZoneStandardHour,
    us.TimeZoneStandardMinute,
    us.TimeZoneStandardSecond,
    0,
    us.TimeZoneStandardDayOfWeek))
    as ToUTCTime
    FROM FilteredUserSettings us where systemuserid = dbo.fn_FindUserGuid()

    Dynamics CRM upgrade–SSRS issues

    $
    0
    0

    I recently completed a CRM 3.0 to 4.0 upgrade for a customer and ran into a couple SQL Server Reporting Services issues during the upgrade.  The SSRS errors took longer to fix than anything we ran into for CRM specifically.

    The first error came when attempting to point the SSRS server to the new databases stored on a separate server using the Reporting Services Configuration Manager.  The databases were at an older version and the Config Manager required that they be upgraded.  During the upgrade, an error was generated regarding the RSExecRole database role.  The Config Manager indicated it could not find this role for the database.  The fix for this was simply to create a new database by clicking the New… button in the Database Setup window.  Then, once the new database is created, switch back to the original database and apply the changes.  Somewhere in creating the new database and switch back to the original, the RSExecRole role got set up correctly.  Finally, credentials were not being passed correctly to the SQL Server.  SSRS was attempting to log in anonymously.  To fix this, the Windows Service Identity was switched from Local System to Network Service.

    The second error caused reports not to work when viewing through the CRM web client.  Looking at the event viewer for the SSRS server, there was an error with Source: MSCRMReporting and Event ID: 19969.  The description was “Error: An internal error occurred on the report server.  See the error log for more details. (rsInternalError)”  Next step was to attempt to run the report from the SSRS website.  When running from there, another error was generated which referenced the SessionData table in the ReportServerTempDB database.  The error made reference to the SnapshotDataID field not allowing nulls.  The fix for this was to edit the SessionData table and set the SnapshotDataID, IsPermanentSnapshot, ReportPath, and HasInteractivity fields to all Allow Nulls.

    Hopefully this might save someone a little time during the upgrade process!

    ReportingAccountMemberOfSecurityGroupValidator Error When Installing CRM 2011 Reporting Extensions

    $
    0
    0

    I recenty worked through an issue where a customer was receiving the following error when attempting to install the CRM 2011 Reporting Extensions:

    Check ReportingAccountMemberOfSecurityGroupValidator : Failure: A Microsoft Dynamics CRM Server component is using the same account as the instance of SQL Server Reporting Services.

    This error can occur for a variety of reasons.  One reason can be related to the SQL Reporting Services service being started by a domain account that is a member of the SQLAccessGroup (this account does not need to be in the SQLAccessGroup).  The same situation could occur if the SQL Reporting Services service is starting with the Network Service account and the SQL Reporting Services server name is located within the SQLAccessGroup.  To get past this issue, you have two options:

    1. Remove the account from the SQLAccessGroup
    2. Use the IgnoreChecks registry key to get past this error message in the short term (specified in KB 974584).  It would be recommended to remove the account that is in the SQLAccessGroup at a later time.

    There may be situations where the CRM server and the SQL Reporting Server are installed on the same physical server running under the same account.  Ideally, the services would be running under different accounts.  If the CRMAppPool and the SQL Reporting Services service are running under the same account (and that account is added to the SQLAccessGroup), you would receive a warning message rather than an error message. 

    The reason that the error occurs is listed below:

    Microsoft Dynamics CRM Reporting Extensions should not be installed on an instance of Microsoft SQL Server Reporting Services that is running under an account that is a member of the SQL Access Group.  This can occur when Microsoft SQL Server Reporting Services is running under the same account as a Microsoft Dynamics CRM Server 2011 component. This configuration can make the system vulnerable to certain attacks. During installation, Setup detects this scenario.

    Thank you,

    Jon

    CRM 2011 Error “Scheduling reports on behalf of other users is prohibitted” when scheduling reports

    $
    0
    0

    Recently I worked with a customer that encountered the error message “Scheduling reports on behalf of other users is prohibitted” when they tried to schedule reports in CRM 2011. After some troubleshooting we found the error was happening because the account running their CRMAppPool was also a CRM User.  It is a against best practices to run the CRM application pool as an account which is also a CRM user.  The knowledge base article KB2593042 provides some other issues which may happen if CRM is configured in this way.

    Below are the options available to resolve the issue. To avoid reconfiguring the application pool and service principal names we opted to change the CRM user to another Active Directory user account.  After making this change the users could schedule reports without any issues.

    Resolution 1: Change the CRMAppPool user account to a new Active Directory user account.  Click here for steps on changing the CRMAppPool account.
    Resolution 2: Change the CRM user to a new Active Directory user account which is not tied to any CRM services. 
        a. Open Microsoft Dynamics CRM 2011 as a System Administrator user.
        b. Click Settings, click Administration, click Users, and then open the user record that you want to change.
        c. In the Domain Logon Name box, type an Active Directory user account that is not used by a Microsoft Dynamics CRM 2011 user record.


    Note:
    The word “prohibited” is misspelled in the actual error message. This misspelling should be addressed in a future Update Rollup.


    CRM Stack Trace Error:

    Crm Exception: Message: Scheduling reports on behalf of other users is prohibitted., ErrorCode: -2147220970, InnerException: Microsoft.Crm.CrmException: Scheduling reports on behalf of other users is prohibitted.

    at Microsoft.Crm.ObjectModel.ReportServiceInternal`1.CreateSchedule(Guid originalReportId, String scheduleXml, String parameterXml, String scheduledReportName, ExecutionContext context)

     

    Please refer to the CRM Implementation Guide (http://technet.microsoft.com/en-us/library/hh367322.aspx) for setting up service accounts.

    • We strongly recommend that you select a low-privilege domain account that is dedicated to running these services and is not used for any other purpose. Additionally, the user account that is used to run a Microsoft Dynamics CRM service cannot be a Microsoft Dynamics CRM user. This domain account must be a member of the Domain Users group. Additionally, if the Asynchronous Service and Sandbox Processing Service roles are installed, such as in a Full Server or a Back End Server installation, the domain account must a member of the Performance Log Users security group.

     

    Jeremy Morlock

    Microsoft Premier Field Engineer

    Dynamics CRM & SQL 2012 Compatibility

    $
    0
    0

    Microsoft SQL 2012 RTM’d yesterday (link) and you’re probably wondering: “Can I upgrade my SQL Server instance to SQL 2012 if it hosts CRM databases?” and the answer is YES!  For CRM 2011 make sure you’ve installed update rollup 6 and for CRM 4.0 you should install update rollup 21 before upgrading.  After the upgrading to SQL Reporting Services 2012 remember to install or re-install the Report Connector (details in the KB below).  More details are available from the resources below:

     

    References and resources:
    - Future plans for CRM 2011 + SQL Server 2012: Better together
    - Current issues KB for SQL 2012 and Dynamics CRM
    - Dynamics CRM Compatibility KB
    - SQL 2012 Download

    “CRM Anywhere” Video Overview

    $
    0
    0

    Important Note: The CRM Product Group has published a blog titled "Q2 2012 Service Update – New delivery schedule" which clarifies the release plans for upcoming Update Rollups and Quarterly Service Updates in calendar year 2012.


    In this video Reuben Krippner covers important information around the new capabilities and features of “CRM Everywhere”. This content is great for business decision makers, CRM administrators, & developers to better understand how this update can be leveraged to improve your users experience.

    Here is a breakdown of the video by topic:

    • Intro 
    • Mobility Enhancements (1:36)
    • Demo: Use of the IPad mobility client** (4:20)
    • Demo: Configuring mobile devices and experiences** (10:27)
    • Accessing CRM data via other browsers (14:33)
    • Activity feed enhancements (18:30)
    • SQL 2012 features and the BI labs* (20:59)
    • Demo: PowerView Reports (24:13)
    • Optimized record viewing in CRM “RapidView” (32:46)
    • New Online Data Certifications (35:10)
    • Availability of Industry Template Solutions* (38:49)
    • Closing (40:34)

     

    *Note: Dynamics CRM Lab solutions are not core Microsoft Dynamics CRM functionality and are not supported by Microsoft but there is a global community facilitated by the Microsoft Dynamics Marketplace which allows you to discuss and exchange ideas and questions.

    **Note: The Dynamics CRM Q2-2012 update will offer a cloud based mobility solution for various devices.  This solution will be available to on premise customers, however, the solution requires the use and configuration of CRM’s Internet Facing Deployment (IFD) and Claims Based Authentication.   

    Custom Reporting in Microsoft Dynamics CRM - Fetch vs. Filtered Views

    $
    0
    0

    Frequently we see customers that require reporting out of Microsoft Dynamics CRM that cannot be handled using the out of the box report wizard or advanced find. This is the first post of a series of blogs I will be posting around both reporting options as well as technical issues and cases we have seen and resolved within our customers environments.

    When it comes to building SSRS reports for Microsoft Dynamics CRM 2011 using Visual Studio (Business Intelligence Development Studio, a feature that can be installed as part of SQL Server), there are two options available that provide you the ability to query and format your CRM data into flexible dynamic reports. The options are SQL reports querying the CRM Database Filtered Views or using Fetch, a proprietary query language commonly referred to as FetchXML, this language utilizes the CRM Report Authoring Extension that is to be installed alongside Visual Studio’s Business Intelligence Development Studio. In this post I will define the capabilities of each option as well as explore which option makes the most sense for the different deployment options within Microsoft Dynamics CRM. I will begin by explaining the differences between querying the CRM filtered views and FetchXML and discuss the different options available for the deployment options.

    FetchXML

    Fetch is a proprietary query language that is used in Microsoft Dynamics CRM. The FetchXML language supports similar query capabilities as a SQL query expression. Within Microsoft Dynamics CRM Fetch is used to save a query as a user owned saved view or as an organization owned view in the - the functionality behind Advanced Find, also utilizing the out of the box security structure. Fetch XML queries can actually be generated from within the Advanced Find tool within CRM as a great starting point for your reports data set.

    When utilizing FetchXML to create SSRS reports in CRM, the query is sent to the web server to retrieve data from CRM database, permitting SSL only connections to the web server will protect data over the wire in the case of IFD and CRM Online deployments, additionally, this is the only option for creating custom SSRS reports in CRM Online.

    SQL Database Filtered Views

    Microsoft Dynamics CRM includes SQL database filtered views that are used for business data access, when these tables are queried the data in filtered views is restricted at three levels: the organization, the business unit, and the owner, therefore utilizing the out of the box security structure to limit the data that is returned. Filtered views exist for all Microsoft Dynamics CRM business objects (entities). They key difference between using the two to create your report is compatibility with CRM Online vs. CRM On-Premise deployments:

    CRM On-Premise Deployments

    If you are using Microsoft Dynamics CRM On-Premise version, the preferable option would be the CRM Database Filtered Views to create reports as using a T-SQL Query, making very complex reporting scenarios easier to handle and also offering a much more flexible development experience as there are no limitations. . That being said, FetchXML can be preferred, even in an On-Premise environment due to its optimal performance. When utilizing Fetch reports in CRM they use FetchXML queries instead of SQL queries, they do not need to use the filtered views in the Microsoft Dynamics CRM SQL database to retrieve data for reports. Since FetchXML reports no longer have to use filtered views in order to honor CRM security, the time that it takes to execute these FetchXML queries should decrease. Therefore if the custom reports you are looking to build fit within the limitations below, it may be worth evaluation.

    CRM Online Deployments

    The first thing to note is that you cannot access filtered views in Microsoft Dynamics CRM Online because access to the SQL database is not supported, therefore the only option is to use Fetch. One big win for report writers though is the ability to generate your FetchXML queries from Advanced Find and as mentioned performance is a key benefit to using Fetch reports. In regards to the limitations, Fetch introductions a few potential road blocks in development flexibility and complexity, those limitations include:

    1. Fetch does not support RIGHT OUTER JOIN and FULL OUTER JOIN
    2. Fetch does not support EXISTS/IN condition with sub-query/expression
    3. An amount of 5000 returned records maximum
    4. No “UNION” selects
    5. You cannot specify group by / sum queries – You can only select the records in detail and then perform the aggregation in your report. 
    6. Number of entity join (link) limitations
    7. FetchXML reports cannot use non-CRM online data sources
    8. Learning curve – for report writers that are not familiar with FetchXML the syntax is quite different from SQL.

    Summary

    The following table summarizes some of the key differences between these two reporting options:

     

    SQL Reports

    FetxhXML Reports

    Development experience

    Requires a separate program for designing the report such as SQL Business Intelligence Development Studio (BIDS) or Report Builder.

    These reports are also designed using BIDS (must download the CRM Report Authoring Extension).

    Report writer skill set

    Building SQL reports requires SQL Server skills and development experience.

    Building SQL reports requires SQL Server skills and development experience, as well as FetchXML query knowledge. The Advanced Find tool can also be used to build FetchXML queries.

    Flexibility

    These reports can take data from CRM and present it in multiple ways. Reports can achieve complex requirements as you can use any feature from SQL Reporting Services.

    Functionality is restricted to what the Report Wizard or Custom FetchXML can support, limiting the ability to return complex queries.

    Data queries

    Data is queried using SQL statements that read the filtered views in the organization database.

    FetchXML queries are used for retrieving data for these reports (Advanced Find can be used to generate FetchXML queries).

    Reporting mechanism

    These reports can be scheduled, delivered by email and other mechanisms.

    Must be executed on-demand.

    CRM Online Support

    Not supported

    Supported

     Ready to get started with custom reporting in Microsoft Dynamics CRM? As noted above, I will be posting a series of additional report related blogs, I have also added a few resources below for more information on Fetch vs. Filtered Views.

    Helpful Resources:

    FetchXML

    Filtered Views

    Developing Fetch XML Based SSRS Reports

    Thanks!

    Sarah Champ

    Microsoft Premier Field Engineer

     


    Improving Dynamics CRM Report Performance – Part 1 “The Basics”

    $
    0
    0

    A lot of times customers have questions around how to improve reporting performance in Dynamics CRM. Of course, with every CRM deployment and report the answer may be different, but some tips can be applied more generally. In this post I will discuss some basic tips and tricks to improve your Dynamics CRM reports, specifically around query tuning and using Visual Studio’s Business Intelligence Development Studio. This is the second blog post in the CRM Reporting Series, you can find the first post in the following link which focuses on the different options for querying data and building reports out of CRM: Custom Reporting in Microsoft Dynamics CRM - Fetch vs. Filtered Views

    When thinking about reporting, the total time that it requires to generate a report can be split into three different actions:

    1. Time it takes to execute the reports queries on the SQL Server.
    2. Time it takes to process the report on the reporting server, based on the result set of the executed queries.
    3. Time it takes for the report to render.

    There are many possible culprits of reporting performance issues and often users jump to the conclusion that it has to be a server side issue. Maybe so, though many times we see that report performance issues in CRM are directly related to the datasets, queries and report formatting logic within the report that could be optimized for better performance. The following are suggestions for optimization as you begin to troubleshoot:

    Suggestions for all Dynamics CRM Deployment Types:

    The following summarizes the recommendations that can be performed using reporting tools for both CRM On-Prem and CRM Online, specifically what can be done using either SQL Queries OR FETCHXML, which is the only option for CRM Online.

    Optimize Report Queries & Retrieve the Minimum Amount of Data Needed in your Report

    • Review the number of fields returned in each dataset, you will likely find that they contain more columns than used in the report. The more columns returned the slower your query execution, if there are fields that are not being using in the report, they should be removed from your query.
    • Ensure all queries being executed are being used in the report. When a report is run every dataset in the report will be executed, regardless of if it is being used in a report. A lot of times new datasets are added during building of reports and not cleaned up later on. Check to ensure that all datasets are still being used, for instance, datasets for available parameter values and if it is determined that there are data sets no longer being used be sure to delete them from your report.
    • If possible, add filters and parameters to reduce the number of records returned, large result sets (more than 250 records) are more like a data export. By adding parameters that users must specify when they run the report, such as date ranges or owner, or by adding additional selection criteria to a report you can greatly reduce the data that is filtered for the report each time it is run by a user.
    • Look very critically at the need for the large result sets and scale back if possible. The time it takes to render a report will increase based on the number of records being returned, as well as the number of data sets in your report. If the details are only used in a small amount of the situations, create another report to display the details which will avoid the retrieval of all details in the larger number of situations.
    • Using ORDER BY in the dataset differs from the ORDER BY in the Tablix\list. You need to decide where the data will be sorted. It can be done within SQL Server with an ORDER BY clause in the dataset or in by the Reporting server engine. It is not useful to do it on both sites. If an index is available use the ORDER BY in your dataset query.
    • Additionally, a lot of times data is GROUPED in the report without any drill down, in that scenario perform the GROUP BY in your dataset query which will save on data transfer to the SQL Server and it will save the reporting server engine having to complete the GROUP BY.

    Reporting Services (Business Intelligence Studio) Recommendations

    • Keep in mind where you are using page breaks, reports are rendered into pages based on where page breaks occur. Although the entire report is processed before the rendering phase, the performance of the rendering extension is significantly impacted by the page size.
    • Using a primary report to operating the parameters and filtering aspects and then passing those parameters to a sub report. This can have a beneficial benefit because it can avoid issues with how parameters and data sets operate.
    • Try restricting your report from first parameter. Sometimes when you select first parameter, based on that you need to fill in a second parameter option set. If there are hundreds of records then also reports will be very slow. In that case remove those parameters, if possible.
    • Limit Text Length and Number of Items in Charts, reports use only some of the possible chart types from Reporting Services. For any chart type, limiting label length and number of items is recommended for the chart contents to be displayed correctly. When Reporting Services displays a chart with long labels, the chart itself becomes too small to be usable.
      • Limit your chart label length, truncating it if it is necessary.
      • Consider limiting the number of items displayed in charts.

    CRM On-Prem Only Suggestions

    • Use the SQL Profiler to measure the performance of all datasets (Reads, CPU and Duration), to determine where your more expensive queries may be happening and identify if they can be tuned.
    • Ensure that you are NOT using the dreaded “SELECT * FROM Table/View” syntax that returns all fields for a table or view. For those of us who are report developers, at first this seems to be the easy way, though retrieving all columns creates a lot of overhead, especially if multiple data sets are using this syntax. Assume you use 7 columns in the tablix\list, change the syntax of the dataset to only return these 7 columns.
    • When comparing dates, use the UTC date fields for comparisons. For example, compare the createdonutc fields and not the createdon fields in a filtered view.
    • Using SQL JOINS
      • One of the best ways to boost JOIN performance is to limit how many rows need to be JOINED. This is especially beneficial for the outer table in a JOIN. Only return absolutely only those rows needed to be JOINED, and no more.
      • If you perform regular joins between two or more tables in your queries, performance will be optimized if each of the joined columns have their own indexes.
      • If you have two or more tables that are frequently joined together, then the columns used for the joins on all tables should have an appropriate index.
      • Avoid joining tables based on columns with few unique values. If columns used for joining aren’t mostly unique, then the SQL Server optimizer may not be able to use an existing index in order to speed up the join. Ideally, for best performance, joins should be done on columns that have unique indexes.

    Additional Considerations to take when optimizing your reports:

    • Do not make a report with a large dataset or a complex SQL query available on-demand to all users. Instead schedule a snapshot in Report Manager during a time schedule when the system is lightly loaded.
    • How the software and reports are being used and if the process can potentially be improved. (IE: Can you replace reports with views and/or dashboards?)
    • If Microsoft CRM for Outlook is used and if users go offline which can tax system resources.
    • Peak usage patterns, understanding which reports are being used when and if those reports can be tuned for optimized performance.
    • You could also opt to create a data warehouse(another database). The drawback is you will have to refresh this data warehouse with your CRM data every few hours.

    For additional perspective on the different options that the Microsoft Dynamics CRM 2011 SDK provides for retrieving data programmatically, check out a recent post by Austin Jones explaining Dynamics CRM 2011 SDK Query Limitations by API.

    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

     

    Microsoft Dynamics CRM 2013, 2011, and 4.0 Service Updates and Update Rollups: Release Dates, Build Numbers, and Collateral

    $
    0
    0

    Microsoft Dynamics CRM 2013

    Note: These Update Rollups update the following components available via the Microsoft Download Center with the exception of the two Mobile clients and SSRS Data Connector, which are not on the Download Center but are available elsewhere as noted below:

    Microsoft Dynamics CRM Server 2013

    Microsoft Dynamics CRM 2013 for Microsoft Office Outlook (Outlook Client)

    Microsoft Dynamics CRM 2013 Email Router

    Microsoft Dynamics CRM 2013 SSRS (SQL Server Reporting Services) Data Connector
    The SSRS Data Connector is not available as an individual download. It is included in the Microsoft Dynamics CRM Server 2013 download. When you extract the Server package (CRM2013-Server-ENU-amd64.exe /extract:path: extracts the content of the package to the path folder), you’ll find the Data Connector in the SrsDataConnector folder

    Microsoft Dynamics CRM 2013 Language Packs

    Microsoft Dynamics CRM for Windows 8 (“MoCA” – the Mobile Client Application available via the Windows Store)

    Microsoft Dynamics CRM for iPad (in iTunes)

    Microsoft Dynamics CRM 2013 Report Authoring Extension (with SQL Server Data Tools support)

    Microsoft Dynamics CRM 2013 List Component for Microsoft SharePoint Server 2010 and Microsoft SharePoint Server 2013 (for multiple browsers)

    Notes:

    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? Now we have all of this in one “living" Knowledge Base article: the Microsoft Dynamics CRM Compatibility List.  For example, you can use this KB 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.

     

    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.

     

    NEW RELEASE REGARDING the OrgDbOrgSettings tool for CRM 2011 and CRM 2013!

    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 / CRM 2013 managed solution - that provides you with an easy-to-use GUI with which you can configure all of the options outlined in the Knowledge Base on a per-tenant basis.  Feel free to download it, install it, and check it out... I sure use it!

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

    CRM 2013 pre-release builds

    Build number

    Knowledge Base article

     

    Beta

     

    6.0.0000.0215

    n/a

     

    RC

    6.0.0000.0514

    n/a

     

    RTM

    6.0.0000.0809

    n/a

     

    CRM 2013 UR #

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

    2891271

    Blog

    Podcast

    2

    3/22/2014

    4/8/2014

    6.0.0002.0046

    2919956

    Blog

    Podcast

    CRM 2013 UR #

    Release date and Download Center URL

    Release date – Microsoft Update

    Build number

    Knowledge Base article

    PFE Blog

    PFE Podcast

     

    Microsoft Dynamics CRM 2011

    Note: These Update Rollups update the following components available via the Microsoft Download Center. As of Jan. 21st, 2012 these installation files have been updated to include CRM 2011 Update Rollup 6 (re-release Version 05.00.9690.1992):

    Microsoft Dynamics CRM Server 2011

    Microsoft Dynamics CRM 2011 for Microsoft Office Outlook

    Microsoft Dynamics CRM 2011 E-mail Router

    Microsoft Dynamics CRM 2011 SSRS (SQL Server Reporting Services) Data Connector
    The SSRS Data Connector is not available as an individual download. It is included in the Microsoft Dynamics CRM Server 2011 download. When you extract the Server package (CRM2011-SERVER-ENU-AMD64.exe /extract:path, extracts the content of the package to the path folder), you’ll find the Data Connector in the SrsDataConnector folder

    Microsoft Dynamics CRM 2011 Report Authoring Extension (Microsoft Dynamics CRM 2011 BIDS, aka Microsoft SQL Server 2008 or 2008 R2 Business Intelligence Development Studio Fetch Extension)

    Microsoft Dynamics CRM 2011 Language Pack (aka Multilanguage User Interface, MUI)

    Notes:

    Keep in mind that Mainstream Support for Microsoft Dynamics CRM 2011 ends July 12th, 2016 as per CRM 2011’s supported lifecycle.

    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

    CRM 2011 UR #

    Release date and Download Center URL

    Release date – Microsoft Update

    Build number

    Knowledge Base article

    PFE Blog

    PFE Podcast

     

    Microsoft Dynamics CRM 4.0

    NOTE: Due to the low volume of fix requests for CRM 4.0 due to migration to CRM 2011, the CRM Product Group paused releases of CRM 4.0 Update Rollups after Update Rollup 21 was released 2/9/2012. Mainstream Support for Microsoft Dynamics CRM 4.0 ended April 9th, 2013, as per CRM 4.0’s supported lifecycle.

    CRM 4.0 UR #

    Release date and Download Center URL

    Build number

    Knowledge Base article

    Premier Field Engineering Blog

    Premier Field Engineering Podcast

    1

    11/24/2008

    4.0.7333.1113

    952858

    n/a

    n/a

    2

    2/9/2009

    4.0.7333.1312

    959419

    n/a

    n/a

    3

    3/12/2009

    4.0.7333.1408

    961678

    n/a

    n/a

    4

    5/7/2009

    4.0.7333.1551

    968176

    n/a

    n/a

    5

    7/2/2009

    4.0.7333.1644, 4.0.7333.1645

    970141

    n/a

    n/a

    6

    8/27/2009

    4.0.7333.1750

    970148

    n/a

    n/a

    7

    10/22/2009

    4.0.7333.2138

    971782

    n/a

    n/a

    8

    12/17/2009

    4.0.7333.2542

    975995

    n/a

    n/a

    9

    2/11/2010

    4.0.7333.2644

    977650

    n/a

    n/a

    10

    4/8/2010

    4.0.7333.2741

    979347

    n/a

    n/a

    11

    6/3/2010

    4.0.7333.2861

    981328

    n/a

    n/a

    12

    7/27/2010

    4.0.7333.2935

    2028381

    n/a

    n/a

    13

    9/23/2010

    4.0.7333.3018

    2267499

    PFE Blog

    PFE Podcast

    14

    11/16/2010

    4.0.7333.3135

    2389019

    PFE Blog

    PFE Podcast

    15

    1/10/2011

    4.0.7333.3231

    2449283

    PFE Blog

    PFE Podcast

    16

    3/10/2011

    4.0.7333.3335

    2477743

    PFE Blog

    PFE Podcast

    17

    5/5/2011

    4.0.7333.3414

    2477746

    PFE Blog

    PFE Podcast

    18

    6/28/2011

    4.0.7333.3531

    2477777

    PFE Blog

    PFE Podcast

    19

    8/25/2011

    4.0.7333.3628

    2550097

    PFE Blog

    PFE Podcast

    20

    11/10/2011

    4.0.7333.3732

    2550098

    PFE Blog

    PFE Podcast

    21

    2/9/2012

    4.0.7333.3822 (provides SQL 2012 support)

    2621054

    PFE Blog

    PFE Podcast

    CRM 4.0 UR #

    Release date and Download Center URL

    Build number

    Knowledge Base article

    Premier Field Engineering Blog

    Premier Field Engineering Podcast

    See notes above regarding future CRM 4.0 Update Rollup releases

     

    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.

    For more information, see the blog posting "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

    Dynamics CRM Multi-Series Bar Charting – Returns Secondary Y-Axis

    $
    0
    0

    I was recently assisting a customer with some custom charting and dashboards in Microsoft Dynamics CRM 2011. One of their goals was to create a bar chart that allowed them to compare three currency fields by owner for the account entity. One of the features of creating multi-series charts in Microsoft Dynamics CRM is the ability to create charts with a secondary y-axis which allows  each series to have their own measurement scale.

    In my customers scenario, because they had three series in their chart rather than two, this secondary axis actually caused an issue where the bars in the chart were appearing incorrectly.

    1. Note that there are two competing y-axis acting as different measurement scales for the different series
    2. The sum of the data being returned, though correct, displays incorrectly in the graph ($35,000 has the highest bar while both $40,000 and $50,000 appear shorter)

    111111

    In digging in deeper we noticed that the chart was returning a left y-axis and a secondary right y-axis which is deemed “secondary” but added by default to the second series. The 1st series uses the left y-axis and the 2nd series uses the right y-axis and the in their case the 3rd series goes back to the first, causing the appearance of the chart to be inaccurate.

    ASP.NET charting allows for a Primary and Secondary X and Y axis, and because we had 3 series this was causing issues with only being allowed 2 y-axis.

    There was no way to actually control or edit this from the application, so to edit this chart I exported the XML. You can do this by selecting the “More Actions” menu from the chart area within any entities customizations area and selecting to “Export Chart.”

    3333

    Upon opening the XML in visual studio I noticed that there that the second series node had the following attached to the end: YAxisType="Secondary"></Series>
        

     1:<Series>
     2:<SeriesChartType="Column"IsValueShownAsLabel="True"Font="{0}, 9.5px"LabelForeColor="59, 59, 59"CustomProperties="PointWidth=0.75, MaxPixelPointWidth=40"></Series>
     3:<SeriesChartType="Column"IsValueShownAsLabel="True"Font="{0}, 9.5px"LabelForeColor="59, 59, 59"CustomProperties="PointWidth=0.75, MaxPixelPointWidth=40"YAxisType="Secondary"></Series>
     4:<SeriesChartType="Column"IsValueShownAsLabel="True"Font="{0}, 9.5px"LabelForeColor="59, 59, 59"CustomProperties="PointWidth=0.75, MaxPixelPointWidth=40"></Series>
     5:</Series>
     
    I went ahead and removed that from that node (YAxisType="Secondary") and saved a copy of the new xml.  I went back into the charting area for the account entity 
    and through the same “More Actions” menu chose to import the chart.

    After import the chart appears as desired, with no secondary y-axis and the chart data appearing correctly!

    222222

    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

     

    Dynamics CRM Custom FetchXML Reporting with Multiple Datasets using Pre-Filtering

    $
    0
    0

    I was recently assisting a CRM Online customer with troubleshooting a custom report they built. The report was running on the Opportunity as the main entity and also had 5 related datasets that were bringing in some specific connections related to that Opportunity. They were facing three big hurdles:

    1. They wanted to use pre-filtering on the report so that users could run the report from list views and advanced find

    2. They wanted to display Opportunity information but also related connection information in one table

    3. Being that they are using CRM Online the report must use FetchXML as the data processing extension and due to some server side settings, they also had to consider the timeout settings that are in place.

    Report Design

    They were able to accomplish the pre-filtering requirements by creating their main data set and setting pre-filtering = 1: 

    <fetchdistinct="true"no-lock="true"mapping="logical"><entityname="opportunity"enableprefiltering="1"><attributename="statuscode"/><attributename="statecode"/><attributename="new_stage"/><attributename="estimatedvalue"/><attributename="customerid"/><attributename="name"/><attributename="actualclosedate"/><attributename="ownerid"/><attributename="estimatedclosedate"/><attributename="createdon"/><attributename="opportunityid"/><orderattribute="estimatedvalue"descending="true"/></entity></fetch>

    They the created 5 related data sets that were pulling specific connection relationships, the following example is the dataset named “Employee”:

    <fetchversion="1.0"output-format="xml-platform"mapping="logical"distinct="true"><entityname="connection"><attributename="record1id"alias="OpportunityID"/><attributename="record2id"alias="Employee"/><filtertype="and"><conditionattribute="record1objecttypecode"operator="eq"value="3"/><conditionattribute="record1id"operator="in"value="@OpportunityID"/><conditionattribute="record2id"operator="not-null"/></filter><link-entityname="connectionrole"from="connectionroleid"to="record2roleid"><filtertype="and"><conditionattribute="name"operator="eq"value="Team"/></filter></link-entity></entity></fetch>

    Then in the report table, they used the following expression to pull the values from those other datasets into their respective fields, joining based on the @OpportunityID parameter being set by default from the main dataset query:

    =join(LookupSet(Fields!opportunityid.Value, Fields!OpportunityIDValue.Value, Fields!TeamLead.Value, "Employee"), Constants.vbcrlf)

    So we were able to get the report working as expected in a development environment where there was significantly less data than their UAT and Production environments. When they deployed the report into their UAT environment, we noticed that the report was timing out, regardless of the view we were running it from or how many records were being returned in our pre-filter criteria.

    After reviewing the report and considering causes, what we found out is that by default, when using pre-filtering, FetchXML will return the max number of records allowed for a dataset (15001) unless otherwise specified and then filter by the pre-filter and reporting criteria after. Because we couldn’t change the timeout settings from the server side, we had to modify the report query to get the report working:

    <fetchversion="1.0"count='5000'output-format="xml-platform"mapping="logical"distinct="false"><entityname="opportunity"enableprefiltering="1">
     

    By adding the count = ‘5000’ into the header of the FetchXML, the report was able to render successfully in the environments with larger datasets, preventing the timeout. For more information around Count and other functions within fetch you can reference this MSDN article Use FetchXML to Construct a Query.

    The final outcome ended up something like this:

    image

    If you are interested, our PFE team is ready to help you. We have many 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 PremierCustomer emailPremSale@microsoft.com.

    Thanks!

    Sarah Champ

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

       

     

     

     

     

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

    $
    0
    0

     

    We’re proud to announce that all packages for Update Rollup 4 for Microsoft Dynamics CRM 2013 Service Pack 1 were released on Monday, February 22nd 2016 to the Microsoft Download Center!

    The Update Rollup 4 packages for Service Pack 1 should appear on Microsoft Update in Q2, 2016.

    Update Rollup 4 for Microsoft Dynamics CRM 2013 Service Pack 1 Build number: 6.1.4.0145

    Update Rollup 4 for Service Pack 1 Microsoft Download Center page

    Here’s the “Master” Microsoft Dynamics Knowledge Base article for Update Rollup 4 for Service Pack 1: (KB 3122951).

    Going forward, the plan is for the Master Knowledge Base articles for CRM 2013 and CRM 2015 Updates to be published a bit in advance of release to aid planning.

    Podcast

    During the week of March 7th, 2016 Greg Nichols and Ryan Anderson from the Microsoft CRM Premier Field Engineering Team will provide information about:

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

    during their CRM 2013 Service Pack 1 Update Rollup 4 podcast.

    Note regarding Podcasts: We’ve recently changed the location of where we are hosting and distributing our podcasts. See PFE Dynamics Podcast Update for more information.  To download the podcast audio file, right-click here, and choose to save the link location or file locally.

    Go to Top

    The “CRM Update Rollup Collateral Page

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

    Go to Top

    General Upgrade Rollup and Service Pack Notes:

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

    Go to Top

    Update Rollup 4 for Microsoft Dynamics CRM 2013 Service Pack 1 packages are available for download via:

    to update the Dynamics CRM Product installations listed in this Microsoft Knowledge base article: Microsoft Dynamics CRM Installations, Updates and Documentation

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

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

    Go to Top

    Microsoft Dynamics CRM 2013 Update Rollup 4 for Service Pack 1 prerequisites:

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

    Go to Top

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

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

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

    • An Invalid Parameter Error occurs in Dynamics CRM for Phones and Dynamics CRM for Tablets for sub-grid views with Related Entity columns
    • “Duplicate Key” error in importing solution in upgraded organization
    • Using Server Side Synchronization bulk Test and Enable for over 100 users Mailboxes fails with the error “EndGetResponse can only be called once for each asynchronous operation”
    • The process of marking an activity as complete times out after the activity was created when accessing CRM via the outlook client using Claims Based Authentication
    • Deleting Quote Products from the entity navigational area of a Quote form does not trigger recalculation of the price of the quote, so clicking Activate can lock in an incorrect price for the quote
    • Subgrid view sorting arrow is not pointing in the correct direction
    • The error, “dialogArguments is undefined” occurs when attempting to delete SharePoint Sites if the site has thousands of child Document Locations
    • After applying Microsoft Dynamics CRM 2013 Service Pack 1 the SDK getSaveMode function is returning to the incorrect value when reactivating a record. Reference https://msdn.microsoft.com/en-us/library/gg509060.aspx
    • After importing a Solution to an Organization with a custom Default View to an Entity that already has a Default View you will see 2 Default Views for the entity
    • With Dynamics CRM Formats set to Czech you receive an error message when a Service Activity is scheduled: “The Specified date format is invalid or the date is out of valid range. Enter a valid date in the format: d/M/ yyyy”
    • If you insert multiple email addresses that are separated by semicolons in the TO: line of a mail activity, the email addresses isn’t resolved. Instead, you receive a notification: “We found more than one match.”
    • Throwing a Business Process Exception from a plugin will only respect one of the line breaks, not multiple, making formatting difficult
    • There are three wrong translations in the notes section of the activity pane of German CRM 2013 that are misleading to the users: 1. “Insert note” which is translated to “Knoten eingeben” (translated back it comes out as “Insert knot” or “Insert node” as in “XML node”). Expected: “Notiz eingeben.” 2. The “done” button is translated to “abgeschlossen” (“closed” in English). Expected: “Fertig.” 3. The “Delete Note” button has the German translation of “Diese Rolle l’schen,” which means “Delete this role.” Expected: “Notiz L’schen.”
    • When a team-owned record is reassigned, the inherited shares to the owning team are revoked. This revocation doesn’t occur when user owned records are assigned a new owner
    • Creating large numbers of access teams and adding users to them asynchronously can cause slow performance
    • When users use ‘http://mycrm/myOrg/main.aspx?etn=accountandpagetype=entityrecord’ to open a form to create a new account, and then save the new record and go to related activities, the header link to “Return to Form” returns an empty form to create a new record instead of the form that contains all the information of the record that was just created
    • After you upgrade to CRM 2013 Service Pack 1 Update Rollup 1, you receive this error message when you run scheduled reports: “Details: Could not load file or assembly ‘Microsoft.Crm.Reporting.RdlHelper, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference.”
    • UTC dates are treated as local when you update records via JavaScript REST
    • Managed Business Process Flow solution cannot be removed after they are updated by using another solution
    • When you select “Don’t show me this again” on the navigation tour welcome screen and then you clear the cookies in the Internet browser, the navigation tour returns. An option to disable the navigation tour welcome screen was added to OrgDBOrgSettings
    • The schedule conflict warning message was changed in CRM for Outlook
    • In Dynamics CRM for Phones, and Dynamics CRM for Tablets an error occurs changing the sort order on a view that has two sort conditions
    • Data slugs are deleted when saving a template
    • Recently viewed items are not removed for deleted records when the record is deleted by another user
    • If a field is created or updated on a custom entity in a version of CRM 2013 SP1 or greater it temporarily disables Entity Auditing
    • You can’t save a check condition or wait condition step if a lookup condition exists on the step
    • Address information is removed in CRM for some contact records for users who use the CRM for Outlook Client
    • Images are specified on custom Navigation links are visible in the form designer but are not displayed in the CRM form UI
    • A recurring appointment in Outlook gets corrupted if the subject of the tracked recurring appointment is updated on the CRM server
    • When you save a new case by using the SLA feature, you receive this error message:
    • TimeTrackingCacheLoader Operation encountered some errors {0}, see log for more detail
    • If a workflow is created for Appointment creation, and a reoccurring Appointment is synchronized from CRM for Outlook, a duplicate appointment (not another instance of the recurring appointment) gets created in Outlook
    • A duplicate record error occurs when you save a custom entity
    • Workflow Designer fields are reset to null after UR2 is installed for hidden custom fields
    • You can’t configure the CRM 2013 Client for Outlook. You receive this error message: “07:55:01| Error| Exception : |NativeError:621a HResult 80040e17 Message: File already exists. Try using a different database name. [ File name = \AppData\Local\Microsoft\MSCRM\Client\MetadataCache-487f5ce3-2487-4b3c-9fd0-cf4d35960949.sdf ]”
    • Dates in the notes title get automatically parsed to UTC format causing confusion to users
    • Error synchronizing appointments from Exchange to CRM if they are owned by a team
    • Remaining terms of Entitlement modification, because of case closure doesn’t get tracked in the auditing
    • When adding Marketing Lists from a sub-grid on the Contact entity form in the Microsoft Dynamics CRM Client for Outlook, users get the following script error: “{CrmScriptErrorReport} {ReportVersion}1.0{/ReportVersion} {ScriptErrorDetails} {Message}Object expected{/Message} {Line}1{/Line}”
    • Daylight Savings time corrected for Egypt
    • When a customer creates an email activity or tracks an email message that contains HTML content, and that content includes STYLE elements to apply CSS to the HTML content of the email, the style information is inherited by the rest of the form in which the email body content is displayed. This can occur on the email activity forms, or when viewing the Activities tab on the Social Pane
    • Custom Activity metadata error, ‘sendermailboxid’ field appears flagged as a custom field
    • Yammer default Group ID is ignored on Entity pages
    • Clicking “New+” button opens the previously created record form
    • Clicking “New+” button causes command bar to disappear
    • Solution Import with Custom Action fails. This indicates that the SdkMessageId does not exist
    • Outlook crashes during CRM MAPI store when it queries CRM metadata
    • Invalid Argument when you navigate to a view that has a related entity lookup
    • After you install Update Rollup 3 for Service Pack 1, the form shifts to the right (to the right margin of the lookup list) when you click a lookup in a form if the UI is set to Hebrew
    • IIS logs showing many HTTP 500 error messages because the MaxCachedCookies parameter is set to the maximum value of 1,000
    • “Duplicate record” error occurs when you change a newly created record for an entity that has a “N:N” relationship
    • Custom Fields are disabled in Firefox
    • When you create a Case Creation Rule by using the Slovak MUI, you receive an “Input string was not in a correct format” error message
    • Appointments that are tracked by delegates on a user’s calendar do not synchronize to CRM
    • Alert messages appear in the the user’s Mailbox record if the e-message mail that is trying to synchronize does not have a Sender
    • The error System.ArgumentException(“An item with the same key has already been added.”) occurs and causes Outlook to crash after opening the application
    • When you update the database, a failure occurs stating: The correlation name ‘IsMapiPrivatePLTable’ is specified multiple times in a FROM clause
    • Grid view is not working after using the back button, or navigation in Safari
    • Outlook crashes after you navigate to a Dashboard in CRM for Outlook
    • When attempting to assign a Rollup Query the error “An error has occurred. Please return to the home page and try again.” occurs
    • The sharing privilege “Opportunity Sales Process” does not get synchronized when going offline. This only happens when the Read privilege for the Process entity is not set to Org Level Access (Default)
    • The header lines are no longer all on one line for view columns after you update to CRM 2013 SP1 UR3
    • A report is not displayed in a non-default organization with the internal ADFS URL
    • Access Denied Permissions dialog does not appear on Save in Chrome browser when you try to edit notes that are owned by another user
    • Users cannot view asynchronous workflows for Quotes Orders and Invoices when they look for “background processes” in the navigation area of the record relationships
    • If two or more entities have parental relationships with the same entity, deleting that parent record will cause a Foreign Key Constraint error in SQL Server
    • SLA Timer on cases showing an incorrect time for a non-English locale setup
    • Dynamic Marketing List members are no longer displayed after you modify the subgrid on the form
    • When you add a phone call to an account from a subgrid on the Account form, the “call to” and “regarding objects” fields are not pre-populated
    • The list of activities is not populated on the Social pane because of email activities that are incorrectly formatted as HTML
    • The error “User Id invalid” occurs during a call to AddUserToRecordTeamRequest
    • After you set Set Regarding to an Opportunity, and then you track the email message by using CRM for Outlook, the message is tracked, but the Set Regarding value is removed
    • Graph does not appear correctly with Fiscal Period setting other than yyyy/01/01
    • File names are truncated when downloading a file with a Japanese name from Annotation
    • Inline dialog does not display correctly in CRM for Phones Express
    • Running a workflow that was created to update the To, From, or Subject field results in the e-mail body getting removed
    • Users have to select the lookup icon twice if the field being selected does not have focus
    • The Due Date attribute in not available on the Add Phone Call Quick Form on the Social Pane in Microsoft Dynamics CRM
    • When you configure a CRM for Outlook client on a Terminal Server, if there are other CRM for Outlook clients you may encounter performance issues when starting the configuration wizard
    • An email activity including HTML Information can corrupt the entity form when selecting the “Activity Wall”
    • Creating large numbers of Access Teams and adding users to them asynchronously can cause slow performance
    • Xrm.Page.getAttribute(“modifiedon”).getValue() returns Invalid seconds data
    • A display issue may occur when navigating between pages in the grid of a dashboard
    • When making WCF requests using Claims Authentication, the performance of the CRM server is affected as only one or two threads are being processed at a time
    • Insert Template does not apply the template to the record, and it needs to be selected a second time before being applied
    • You can’t open records from a grid after you navigate to a record and then return to the grid by using Safari for iOS
    • The Pipeline Phase (stepname) field is blanked out when an Opportunity is reopened
    • A data source that contains a comma and a port number causes the organization creation to fail. That is: SQL AlwaysOn
    • Command bar is missing or not working when opening a chart and moving pages
    • When running FetchXml based report with a linked entity, you may receive an rsProcessingAborted exception
    • Two option field type causes an unexpected behavior when formatted to use the “check box” layout
    • When using mail merge in CRM 2013 Service Pack 1 Update Rollup 3 attachments are stripped for subsequent recipients and a message is shown
    • HTML codes appear in notes with special characters
    • Opening a recurring Appointment that has been shared with you by another system administrator generates the following error: SecLib::AccessCheckEx failed
    • An e-mail fails to promote due to a “Bad Conversation Index” error
    • Messages that are relayed to Exchange and are processed with the forward mailbox will fail and be moved to the undeliverable folder if they are DKIM verified
    • Email messages that contain ConversationIndex values that do not follow MAPI standards are not promoted in CRM 2013
    • A JavaScript error occurs when displaying the print preview of a new record with subgrids
    • Realtime workflows cannot change CustomerIdName
    • Export to Excel does not align RTL in Hebrew UI
    • Secured fields being shared with a team having read and write access do not display the value
    • Messages that are relayed to Exchange, and are processed with the Forward Mailbox that are DKIM verified will fail and be moved to the undeliverable folder
    • Deleting a Process from a Managed Solution Orphans the process labels, preventing you from installing the same solution again in the future
    • Annotations are overwritten
    • Unable to enter the Polish character “?” in the “To” field of an email message created in CRM
    • Users belonging to more then 250 business units cannot load dashboards because of query performance
    • DataExported to Excel cannot be re-imported if you have duplicate lookup values
    • CheckPrivilege error when trying to activate a Business Process Flow
    • Russian Time zone dates show incorrectly in filtered views
    • During an Export to Excel, zero values for money, or decimal fields are not getting exported
    • During an Export to Excel, the time segment is not displayed when exporting DateTime fields
    • Duplicate attributemask values within the same entry cause an Unexpected Error when opening Audit History
    • Daylight savings time corrected for Turkey
    • Notes containing Japanese characters do not get decoded
    • Email messages get stuck in the Outbox if a user has more than one email account configured in Outlook
    • An error message occurs when an email message is saved and closed: “Unable to get property ‘keydown’ of undefined or null reference”

    Go to Top

    Hotfixes and updates that you have to enable or configure manually

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

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

    Go to Top

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

    When appropriate, Microsoft will release enhancements via future Microsoft Dynamics CRM 2013 Update Rollups, Service Packs, or new major version releases to assure compatibility with future releases of these products. This compatibility matrix is updated via this Microsoft Knowledge Base article: Microsoft Dynamics CRM Compatibility List.

     

    Greg Nichols

    Senior Premier Field Engineer, Microsoft Dynamics CRM

    Microsoft Corporation

    Dynamics CRM integration with SiteMinder via ADFS

    $
    0
    0

    It’s important that we integrate Microsoft products together with 3rd party identity providers. This allows us to execute on our mission to empower everyone on the planet to do more and achieve more. Understanding how we use federated identities to connect users with CRM services is critical to achieving this. This post will detail the requirements for connecting Dynamics CRM with CA Single Sign-On (SSO), formerly SiteMinder. We use ADFS as an intermediary, as CRM supports it out of the box.

    To start things off, you first must configure Dynamics CRM in an IFD configuration. This enables CRM to authenticate users based on claims authentication. Follow one of the many configuration guides to configure CRM to authenticate to ADFS using Active Directory. CRM relies on ADFS using the WS-Federation protocol and supports SAML based tokens. A CRM deployment can only be attached to one method of user authentication. If we configure CRM to authenticate to ADFS, we can then enable ADFS to authenticate users from multiple identity providers. Your Relying Party Trust for CRM in ADFS should pass through PrimarySID and UPN, while issuing WindowsAccountName as a Name claim. For example:

    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"]
    => issue(claim = c);
    c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"]
    => issue(claim = c);
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
    => issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType);

    Once you successfully authenticate users to CRM via ADFS using the Active Directory Claims Provider Trust, establish a partnership between ADFS and SiteMinder. This requires creating a Claims Provider Trust (manually) for SiteMinder in ADFS, specifying the service URL (SAML 2.0 endpoint), and importing the token-signing certificate. In this scenario, I used SSL connections on port 443 for both ADFS and SiteMinder endpoints, so I did not enable encryption of the SAML assertions. Your configuration may vary.

    In my customer’s configuration, SiteMinder issues a NameID claim (assertion). Add a custom claims rule to the SiteMinder claims provider trust to pass through the NameID claim:

    c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"]
    => issue(Type = c.Type, Issuer = "ADFS", OriginalIssuer = "SiteMinder", Value = c.Value, ValueType = c.ValueType);

    It’s important to note that the predefined pass through rule in ADFS for NameID didn’t work for me. It requires you to specify the NameID format, while the above custom rule just issues the claim with the same type that it comes in with. Now that we have a claim rule to pass through NameID from SiteMinder, open the claim rules for your CRM Relying Party Trust. There are only two claims that CRM requires. You must issue a UPN claim [http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn] and a Name claim [http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name]. PrimarySID is optional and not required. The UPN claim must be in the standard UPN format of ‘user@domain.com’. For the Name claim however, CRM doesn’t actually want the user’s name (Display Name/Common Name). It is looking for a claim value in the format of ‘DOMAIN\User’, similar to WindowsAccountName or sAMAccountName. So again; the claim must be of type Name and the claim value must be in a ‘DOMAIN\User’ format.

    Add a couple of custom rules to transform your NameID claim into something that CRM will accept. For example:

    c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer != "AD AUTHORITY"]
    => issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn", Issuer = "ADFS", OriginalIssuer = "SiteMinder", Value = c.Value + "@contoso.com", ValueType = c.ValueType);
    c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer != "AD AUTHORITY"]
    => issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", Issuer = "ADFS", OriginalIssuer = "SiteMinder", Value = "CONTOSO\" + c.Value, ValueType = c.ValueType);

    So in this example, if your NameID claim value was ‘1234567890’, then you would be issued a UPN claim with a value of ‘1234567890@contoso.com’. You would also be issued a Name claim with a value of ‘CONTOSO\1234567890’. To complete the configuration in CRM, login with an Administrator account via ADFS/AD and manage users. Add a new user with an account name of ‘1234567890@contoso.com’, using the proper format for your environment. Clear your cache and/or open an InPrivate copy of your browser to test with. Once you visit your CRM Organization page, you should be redirected to ADFS and presented with Home Realm Discovery. Select your SiteMinder IDP and authenticate. After successfully authenticating, you should be redirected back to ADFS, and then CRM logging you in successfully.

    Troubleshooting: Depending on your environment and configuration, you will likely need to review Event Logs in CRM, Event Logs in ADFS, logs for SiteMinder, and most importantly, use Fiddler to trace down issues with this configuration. One issue we faced was that after the partnership was established, ADFS would throw the following error:

    System.Xml.XmlException: ID4262: The SAML NameIdentifier 'SAML2_IDP' is of format 'urn:oasis:names:tc:SAML:2.0:nameid-format:entity' and its value is not a valid URI.
       at Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityTokenHandler.ReadNameIDType(XmlReader reader)

    This was solved by changing the NameID assertion in the SiteMinder partnership to issue type ‘urn:oasis:names:tc:SAML:2.0:assertion’ instead of type ‘urn:oasis:names:tc:SAML:2.0:nameid-format:entity’. Another issue we encountered was that CRM specifies an AuthN context and passes the WAUTH parameter in the URL. This effectively asks ADFS to only use Windows Claims Authentication. To resolve this, we had to enable a setting that ignores the AuthN context in the SiteMinder partnership configuration. Without ignoring the AuthN context enabled, ADFS fails with an error that the IDP is not using the proper AuthN context. Of course this is by design for CRM, and ignoring it in SiteMinder was the final hurdle to making this configuration work. This integration was achieved using Dynamics CRM 2011, ADFS 3.0 (2012 R2), and SiteMinder.

    Now what if you have both internal and external users, with internal users also having an Active Directory account? My customer synchronizes a custom attribute in Active Directory that matches the SiteMinder NameID value. The customer wanted internal users that authenticate via SiteMinder to appear to as if they had logged in via AD. Here’s an example:

    c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"]
    => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn", "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid", "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"), query = "siteMinderID={0};userPrincipalName,objectSid,sAMAccountName;CONTOSO\svc-adfs", param = c.Value);

    The claim rule queries AD for the custom AD Attribute named siteMinderID. You have to pass the name of your ADFS service account to properly query a domain controller. For more information on custom ADFS/AD queries, review my other blog post: Querying attributes from Active Directory using ADFS with a 3rd party Identity Provider.

    Dade Register

    Microsoft Premier Field Engineer

    Run Microsoft.Xrm.Data.PowerShell on Azure Automation

    $
    0
    0

    Hi all,

    When we announced Microsoft.Xrm.Data.PowerShell in this article, we got some feedback that you want to run the module on Azure Automation. Yes we hear you and here comes the latest module which supports Azure Automation!

    Please get the latest module from GitHub (Please download version 2.x)

    What’s Azure Automation?

    Before showing “how to” part, I will explain what is Azure Automation in case you do not know about it. You can consider Azure Automation as PaaS. It provides a place to run PowerShell scripts. You don’t have to worry about Operating Systems nor clustering for High Availability, nor Infrastructure. Azure Automation also provides various capabilities.

    – You can upload your own modules.
    – You can store variables such as Credential, String, etc.
    – You can schedule the task.
    – You can draft and run test session, before “publish” the script.
    – Integration with services such as GitHub, your own services, etc.

    Please find more detail about Azure Automation here.

    Step by Step instructions

    It’s time to play with it. Please follow the steps below to create your first script running on the cloud, which disables “Display welcome screen to users when they sign in” System Settings.

    Create Azure Automation Account

    1. Login to Azure Portal. If you do not have any Azure Subscription, please sign up for 30 days trial. http://portal.azure.com

    2. Click Browse | Automation Accounts from the list and click “Add” in the list.

    image

    image

    3. Check if correct Subscription is selected, then enter name. Then click “Create” button.

    4. Go back to Automation Accounts list to confirm the account has been created.

    Add Assets

    Next step is to add Assets. Asset is a place where you store your own stuff, such as PowerShell modules and variables.

    1. Open added Automation Account and click Assets.

    image

    2. Click Modules.

    image

    3. Click “Add a module” button.

    4. Click folder icon to browse module.

    5. Select Microsoft.Xrm.Data.PowerShell.zip which you download from GitHub, and click “OK”.

    image

    6. Next, add credential. Click Credentials.

    image

    7. Click “Add a credential” button.

    8. Enter credential detail and click “Create”.

    image

    9. Lastly, add CRM Server URL. Click “Variables”.

    10. Click “Add a variable” and enter CRM server URL as “string” variable. Click “Create”.

    image

    Create Runbook

    Now you are ready to write first script! To do so, you need to create a runbook, which will contain your script.

    1. Go back to your automation account blade, and click Runbooks.

    image

    2. Click “Add a runbook” button, and select “Create a new runbook”.

    3. Enter a name as “SetNavigationTourOff” and select “PowerShell” from Runbook type, then click “Create”.

    image

    4. Once the runbook created, select the runbook and click Edit.

    image

    5. Firstly, you get credential and CRM Server URL from variables. Expand “ASSETS” | “Variables” and right click “CRM Server” variable. Then, select Add “Get Variables” to canvas menu, which inserts a script to get the variable.

    image

    6. Modify the script to store the result to $crmserver variable.

    image

    7. Expand “Credentials” and right click “CrmCred”, then select Add to canvas.

    8. Change the script to store the result to $cred variable.

    image

    9. Next, you connect to your CRM organization. Expand “CMDLETS” | “Microsoft,Xrm.Data.PowerShell” and right click “Connect-CrmOnline”, then click “Add to canvas”. Modify the script to store the connection to $conn variable, and pass parameters you obtained above.

    image

    10. Lastly, put the following script to the canvas either by typing or from left menu. The entire script looks like this.

    image

    11. Click “Save” to save the change.

    Test the runbook

    Once you crafted the script, you need to test it.

    1. Click “Test Pane” button.

    image

    2. Click “Start” to run the test, and wait until it’s completed.

    image

    image

    3. Once completed, login to your CRM to see if “Display welcome screen to users when they sign in” System Settings has been disabled.

    image

    Publish the runbook

    Once you confirmed it works as expected, you publish the script.

    1. Click “Publish” button. Click “Yes” for confirmation dialog.

    image

    2. You can also set scheduling. Click “Schedule” button.

    image

    3. Create your schedule as you need.

    Conclusion

    Microsoft.Xrm.Data.PowerShell is compatible with cloud now, and you can bring everything to the cloud. You may still need VM or local computer if you need to keep running the script less than every hour though, as minimum scheduling period is an hour for Azure Automation as of now.

    Ken
    Premier Mission Critical/Premier Field Engineer
    Microsoft Japan


    LINQPad 4/5 Driver for Dynamics CRM Web API is available on CodePlex

    $
    0
    0

    I am pleased to announce that we released “LINQPad 4 and 5 Driver for Dynamics CRM Web API” on CodePlex.

    https://crmlinqpadwebapi.codeplex.com/

    What’s LINQPad?

    LINQPad (http://www.linqpad.net/) is a great tool which you can write and execute LINQ query against many data sources, like SQL Server, Oracle or Web Services. In addition to LINQ query support, the tool also supports C#/F#/VB expression, statement block or program, to write and execute the code and code snippet.

    What can you do with CRM Driver?

    This driver does several things.

    – LINQ query against Dynamics CRM organization
    – Execute Web API action and function
    – Register application to Azure AD for CRM Online

    This driver works with Dynamics CRM 2016 On-Premise, IFD and Online, which supports Web API.

    Install Driver to LINQPad 4 or 5

    1. Download and install LINQPad if you don’t have it yet from http://www.linqpad.net/

    2. Go to https://crmlinqpadwebapi.codeplex.com/ and click “DOWNLOADS” tab, then download CRMLinqPadDriverWebAPI.lpx file.

    3. Open LINQPad and click “Add connection” link on top left.

    image

    4. Click “View more drivers…” button at the bottom of the page.

    image

    5. Click “Browse” button in the bottom of the page.

    6. Select downloaded CRMLinqPadDriverWebAPI.lpx file, then click “Open”.

    7. Click OK.

    image

    Register an application

    For IFD environment, you have to register an application before using the driver.

    1. Login to AD FS server (You need to use Windows Server 2012 R2 AD FS or later).

    2. Open PowerShell

    3. Run the following command. You can change name and Guid, but please keep RedirectUri as the driver expects the value.

    > Add-AdfsClient -ClientId 5ee98d47-38d1-4db5-b5c2-9a60f88c0076 -Name “CRM For Linqpad” -RedirectUri http://localhost/linqpad

    4. Note the ClientId as you use it later.

    For Dynamics CRM Online, the driver automatically register an application on your behalf if you have privilege. Otherwise, you can register an application to another Azure AD environment and use consent feature. In that you, you need to register an application in advance and obtain ClientId. Please see following article for detail how to register an application.

    https://msdn.microsoft.com/en-us/library/mt622431.aspx

    Use the Driver

    1. Select “Dynamics CRM Web API Linq Pad Driver” in Choose Data Context and click “Next”.

    image

    2. For IFD, or if you have ClientId, then uncheck “Register to Azure AD automatically” on the top, and enter ClientId.

    image

    Otherwise, leave the checkbox checked.

    3. Click “Login to CRM” and login to your Organization at login screen.
    Select correct combination for login.

    image

    4. If you didn’t pass ClientId for Online environemnt, then it tries to register application to get ClientId. If your user account doesn’t have enough privilege, you may need to ask Azure AD admin to login or let them register and give you the ClientId.

    image

    5. Then, it’s downloading data content and generates models. For IFD or consent mode, you will be prompted for authentication.

    image

    6. Once “Loading Data” completed, click “Exit”. Then LinqPad starts loading schema, which takes a bit of time. Wait until you see schema information on the left pane like below screenshot.

    image

    Write LINQ query and Execute

    1. Firstly, select added connection from “Connection” dropdown on the top right.

    image

    2. Enter LINQ query to query window.

    image

    3. Click “Play” button or press F5 key to execute query. You will see the result in result pane.

    4. Click SQL tab in result pane, where you can find Web API Url for the query.

    image

    Use Key for navigation

    To use navigation, you can use ByKey to specify single record.

    1. Enter following Query by changing account id to match your record.

    image

    2. Execute and see the result.

    image

    This is equivalent URL displayed in SQL Tab.

    https://crm2016training8.crm7.dynamics.com//api/data/v8.0.1.79/accounts(69e3ec47-60d5-e511-80e3-c4346bc4ef3c)/contact_customer_accounts?$select=fullname

    Execute Unbound Function

    To execute Unbound Function, follow the steps below.

    1. Change Language to “C# Statement”.

    image

    2. Enter following code to execute WhoAmI function.

    image

    3. Execute and see the result.

    image

    This is equivalent URL displayed in SQL Tab.

    https://crm2016training8.crm7.dynamics.com//api/data/v8.0.1.79/WhoAmI()

    Execute Bound Function

    To execute Bound Function, follow the steps below.

    1. Enter for following query, which use navigation of user and call function on it. Replace systemuserid to your user id, which you get from previous function.

    image

    2. Execute and see the result.

    image

    This is equivalent URL displayed in SQL Tab.

    https://crm2016training8.crm7.dynamics.com//api/data/v8.0.1.79/systemusers(8dd78a80-c930-490a-bf06-64e57804b276)/Microsoft.Dynamics.CRM.RetrieveUserPrivileges()

    Actions

    Actions works similar ways to Function.

    What’s next?

    We would like to hear feedback from you!! As it’s open source, you are able to extend it to your own needs, or you can suggest/report bugs.

    Ken
    Premier Mission Critical/Premier Field Engineer
    Microsoft Japan

    “Workflows and Dialogs” upper limit has been removed

    $
    0
    0

    With Microsoft Dynamics CRM Online there was a limit to the number of “workflows and dialogues” you can create of 200, along with entities of 300. You could find information about their usage in the Resources In Use page for your deployment (Administration/Settings/Resources in use) that looked like below:

    WF&DLimitRemoved_1

    In Microsoft Dynamics CRM Online 2015 Update 1 (Spring 15 Release ‘Carina’) this upper limit of “Workflows and Dialogs” has been removed.

    If you notice in the below image the 3rd bar for it has been removed, for best practices of workflows please refer to: https://technet.microsoft.com/en-us/library/dn531079.aspx

    WF&DLimitRemoved_2

    With Microsoft Dynamics CRM Online there is a limit to the number of entities you can create. If you need more custom entities, contact Microsoft Dynamics CRM technical support. This upper limit can be adjusted, Ref: https://technet.microsoft.com/en-us/library/88b18946-474c-4c94-8e4c-27532f930757#BKMK_LimitationsOnMetadata

    Regards,

    Fadi EL-Hennawy

    What does a Dynamics CRM Administrator do?

    $
    0
    0

    Dynamics CRM is an application layer software that sits on top of and integrates with a technology stack that includes other server roles (Active directory, SQL server, Exchange server, SharePoint server,…). Most IT Departments will have clearly defined roles and tasks for each technology server that are well documented and carried out by the technology administrator/owner.  Depending on the size of the implementation sometimes more than one full time resources is assigned, but not for Dynamics CRM! Adding to the normal classic IT administration functions, Dynamics CRM is a business application that embraces end users customizations and responds to changes in business needs.  All of that adds to the life cycle of the solution and adds a bit more complexity.

    Having that said, the role of Dynamics CRM administrator/owner is critical to the success of the solution, and it is required at different stages of the solution life cycle.  In this article we are going to focus on post go-live, operational production tasks of the Owner/Administrator of Dynamics CRM solution

    Notice the below is only high level guidelines for Dynamics CRM on premise solution.  Each solution will have its specific needs and each organization will have it’s own specific best model, it’s a big “it depends”. Dynamics CRM PFE offers a service that can help your organization reach good understanding specific to your implementation,  the service is Microsoft Proactive Operations Program: Operations Team Roles and Responsibilities for Microsoft Dynamics CRM (POP OTRR) Contact your Microsoft Technical Account Manager for more details.

    Task Component Example
    Owns server’s H/W configurations Servers hardware Needed Hardware
    H/W Capacity planning Refresh rate of the Hardware
    Monitoring performance and get notified if any flags raised
    Sizing, anticipating future needs
    Owns server’s S/W configurations Servers software Needed software
    Software life cycle
    Monitoring performance and get notified if any flags raised
    Owns Dynamics CRM Server’s related technologies SSRS
    Email router
    Owns server’s S/W updates (including Windows, SQL server and Dynamics CRM) Servers update Windows Updates
    Dynamics CRM updates
    Owns CRM server Administration settings Dynamics CRM server Organization settings (Language, date,)
    Server settings
    Owns CRM server Maintenance tasks Monitoring Async maintenance jobs,
    Archiving old data and own retention policy
    Owns Dynamics CRM monitoring Establish needed monitoring counters
    Get notified when threshold exceeded
    Owns CRM Performance optimization Follow through and execute remediation tasks
    Owns CRM Organisation Business customization CRM Organisation Business settings
    Customizations, End users customizations (views, reports, finds,..)
    Owns CRM Organisation security and managing users Managing users
    Owns CRM incidents escalations Coordinate with 1st line support
    Make sure benchmark is meet
    Accept and monitors Solution benchmark matrix Report any deviation from benchmarks
    Owns CRM client environment optimization and settings CRM Client Machine configurations
    Software installed and its Settings
    Optimization settings with CRM
    Owns SQL server settings tasks of Dynamics CRM instance SQL Server Processing, memory, locking settings
    Owns SQL server Maintenance tasks of Dynamics CRM Databases Monitoring performance and get notified if any flags raised
    Maintaining indexes
    Maintaining tables & databases sizes
    Monitoring performance and get notified if any flags raised

    Most of these tasks above are not to be carried out by the CRM administrator/s themselves rather they are to be performed by different teams, but the owner in terms of accountability is the Administrators of CRM and they are responsible for coordinating and managing these tasks.

    Regards,

    Fadi EL-Hennawy

    Move data from Dynamics CRM via PowerShell to Power BI

    $
    0
    0

    Hi everyone,

    Today, I introduce PowerShell scripts to move your Dynamics CRM data to Power BI via PowerShell so that you can see CRM data nicer way.

    Prerequisites

    Before starting, let’s setup all the prerequisites.

    PowerShell

    If you are running Windows 10, you are ready. If you are on prior versions, make sure your PowerShell is later than PowerShell V4.0. To confirm, open PowerShell, type “host” and run. There is Version column which shows you which version the PowerShell is. If it is not version 4 or later, please update your PowerShell.

    Dynamics CRM PowerShell module

    We use Microsoft.Xrm.Data.PowerShell module to get data from Dynamics CRM. Please follow this blog to install the module to your PowerShell environment. If you are on Windows 10, or you have installed WMF 5.0, you can simply run “Install-Module Microsoft.Xrm.Data.PowerShell” to install it from PowerShell gallery. Please see more details here.

    Or you are also able to download from GitHub where we host releases. Please read how to install here.

    Power BI PowerShell module

    For Power BI interaction, we use Microsoft.PowerBI.PowerShell and Microsoft.ADAL.PowerShell. Please download these modules here and here.

    Once you install all modules, please make sure you can find these modules by running following command in your PowerShell.

    >Import-Module Microsoft.Xrm.Data.PowerShell
    >Import-Module Microsoft.ADAL.PowerShell
    >Import-Module Microsoft.PowerBI.PowerShell

    Power BI provision

    Next, setup or signup PowerBI.com as your Power BI destination. Go to http://www.powerbi.com and provision Power BI if you do not have any, If you already have one, you are able to use it. Free edition is fine for now. To signup, simple click “Sign In” button on the page and it will navigate you through.

    Get ClientId and Authorizatin Name

    The Microsoft.ADAL.PowerShell needs ClientId and Authorization Name to acquire access token. If you have no idea what they are, please do not mind for now and just follow the steps below to obtain them.

    1. Go to https://dev.powerbi.com/apps?type=native

    2. Click “Sign in with your existing account” and sign in by using the account you provisioned above.

    3. In Step 2, enter like below.

    image

    4. In Step 3, check all checkboxes for now.

    5. In Step 4, click “Register App” button which gives you “Client ID”. Please note it.

    Create Power BI dataset

    Now, you are ready to write scripts. First of all, let’s add a dataset to Power BI which stores CRM data.

    1. Open PowerShell ISE.

    2. Add following code. This lets you connect to PowerBI.

    # Connect to your PowerBI
    Connect-PowerBI –AuthorityName <yourdomain>.onmicrosoft.com `
    -ClientId <obtained ClientID> `
    -RedirectUri http://localhost/powershell  -ForcePromptSignIn

    3. Add following code. This will create a dataset which includes table and columns.

    # Define columns for Table
    $col1 = New-PowerBIColumn -ColumnName Entity -ColumnType String
    $col2 = New-PowerBIColumn -ColumnName Counts -ColumnType Int64
    $col3 = New-PowerBIColumn –ColumnName Date –ColumnType DateTime
    # Define table by using defined columns
    $table1 = New-PowerBITable -TableName EntityCount -Columns $col1,$col2,$col3
    # Define dataset by using defined table
    $dataset = New-PowerBIDataSet -DataSetName CRMPowerBIDemo -Tables $table1

    # Create Table
    Add-PowerBIDataSet -DataSet $dataset

    4. Run the script. Sign in by using Power BI account.

    5. When completed, go to http://www.powerbi.com to see if the dataset created.

    image

    Insert Data from Dynamics CRM

    Next, you retrieve Data from CRM.

    1. Click New on PowerShell ISE to create new script.

    2. Enter following code to get all Entity record counts from CRM Online.

    # Connect to CRM Online
    Connect-CrmOnlineDiscovery -InteractiveMode

    # Connect to PowerBI

    Connect-PowerBI –AuthorityName <yourdomain>.onmicrosoft.com `
    -ClientId <obtained ClientID> `
    -RedirectUri http://localhost/powershell  -ForcePromptSignIn

    # Get PowerBI DataSet
    $dataSet = Get-PowerBIDataSets | ? {$_.name -eq ‘CRMPowerBIDemo’}
    # Get All CRM entity definitions
    $entities = Get-CrmEntityAllMetadata -conn $conn -EntityFilters Entity
    $date = [System.DateTime]::Now.Date

    # Count records only User/Team owned type
    foreach($entity in $entities | ? {$_.OwnershipType -eq [Microsoft.Xrm.Sdk.Metadata.OwnershipTypes]::UserOwned})
    {
    $logicalName = $entity.LogicalName
    $count = (Get-CrmRecordsCount -conn $conn -EntityLogicalName $logicalName -WarningAction SilentlyContinue)

    if($count -eq 0)
    {
    continue
    }
    Write-Host $logicalName $count

    # Create row and insert to PowerBI Table
    $row = @{“Entity”=$logicalName;”Counts”=$count;”Date”=$date}
    Add-PowerBIRows -DataSetId $dataSet.Id -TableName ‘EntityCount’ -Rows $row
    }

    3. Run the script.

    Visualize data in Power BI

    Lastly, create visuals in PowerBI.

    1. Go to http://www.powerbi.com and login.

    2. Select “CRMPowerBIDemo” dataset.

    3. Click Table Visual from Visualizations.

    image

    4. Drag and drop fields from EntityCount table to Values.

    image

    5. Table will show the data.

    image

    6. Click any chart as you wish to change the visualization.

    image

    image

    Summery

    By using PowerShell, it is very easy to pull data from Dynamics CRM and import to Power BI.
    In addition to importing data by using PowerShell, you can directly pull data from Dynamics CRM Online by using OData or Dynamics CRM connector from PowerBI.com, too! I will explain that in the future articles.

    Ken

    Podcast and Overview: Microsoft Dynamics CRM 2016 Update 1.0 (Service Pack 1)

    $
    0
    0

    Contents:

    We’re proud to announce that all packages for Microsoft Dynamics CRM 2016 Update 1.0 (Service Pack 1, codenamed Naos) were released February 21st, 2016 to the Microsoft Download Center! These packages will appear on Microsoft Update shortly .

    Note the naming convention change! Post-RTM Updates used to be called Update Rollups, now they’re just called Updates with the version number:

    Was: Microsoft Dynamics CRM Update Rollup 1 or 2

    Is now: Microsoft Dynamics CRM Update 0.1 or 0.2

    For more details, see the Dynamics CRM Product Group blog “New naming conventions for Microsoft Dynamics CRM updates

    Microsoft Dynamics CRM 2016 Update 1.0 Build number:

    8.1.0.359

    Microsoft Dynamics CRM 2016 Update 1.0 Microsoft Download Center page

    Here’s the “Master” Microsoft Dynamics Knowledge Base article for Microsoft Dynamics CRM 2016 Update 1.0: (KB 3154952). Going forward, the plan is to continue publishing Master Knowledge Base articles for CRM Updates a bit in advance of release to aid planning.

    Podcast

    On Monday, June 27th 2016, Greg Nichols and Ryan Anderson from the Microsoft CRM Premier Field Engineering Team provided information about:

    • The release of Microsoft Dynamics CRM 2016 Update 1.0
    • New fixes made available in Microsoft Dynamics CRM 2016 Update 1.0
    • New functionality made available in Microsoft Dynamics CRM 2016 Update 1.0
    • Deprecated functionality in Microsoft Dynamics CRM 2016 Update 1.0

    during their Microsoft Dynamics CRM 2016 Update 1.0 podcast.

    Note regarding Podcasts: We’ve recently changed the location of where we are hosting and distributing our podcasts. See PFE Dynamics Podcast Update for more information. To download the podcast audio file, right-click here, and choose to save the link location or file locally.

    Go to Top

    The “CRM Update Rollup Collateral Page

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

    Go to Top

    Important note:

    An updated Unified Service Desk for Microsoft Dynamics CRM (Build 2.1.0.556) has been released. See the following Microsoft Download Center webpage for download details:

    Unified Service Desk for Microsoft Dynamics CRM

    General Upgrade Rollup and Service Pack Notes:

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

    Go to Top

    Microsoft Dynamics CRM 2016 Update 1.0 packages are available for download via:

    • The Microsoft Dynamics CRM 2016 Update 1.0 Microsoft Download Center page – released May 23rd, 2016
    • The Microsoft Update Catalog – to be released shortly
    • The Microsoft Update detection / installation process
      • Note: Microsoft Dynamics CRM 2016 Updates will be pushed via Microsoft Update as Important updates
      • Client packages installed manually by downloading the packages and running install will require local administrator privileges. If the client packages are installed via Microsoft Update or SCCM (System Center Configuration Manager), they will not require local administrator privileges
      • Consider using Windows Server Update Services (WSUS) or similar software distribution technologies to distribute Dynamics CRM Update Rollups internally. WSUS is a locally managed system that works with the public Microsoft Update website to give system administrators more control. By using Windows Server Update Services, administrators can manage the distribution of Microsoft hotfixes and updates released through Automatic Updates to computers in a corporate environment
      • For help with installation please see the Installation Information section of the Microsoft Dynamics CRM 2016 Update 1.0 “master” Microsoft Knowledge Base article
      • 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, which also applies to CRM 2015 Updates for these CRM components:

    Microsoft Dynamics CRM Server 2016

    Microsoft Dynamics CRM 2016 for Microsoft Office Outlook (Outlook Client)

    Microsoft Dynamics CRM 2016 Email Router

    Microsoft Dynamics CRM 2016 SSRS (SQL Server Reporting Services) Data Connector

    The SSRS Data Connector is not available as an individual download. It is included in the Microsoft Dynamics CRM Server 2016 download. When you extract the Server package (CRM2015-Server-ENU-amd64.exe /extract:path: extracts the content of the package to the path folder), you’ll find the Data Connector in the SrsDataConnector folder

    Microsoft Dynamics CRM 2016 Language Packs (aka Multi-Language User Interface / MUI)

    Microsoft Dynamics CRM 2016 Report Authoring Extension (with SQL Server Data Tools support)

    Microsoft Dynamics CRM 2016 List Component for Microsoft SharePoint Server 2010 and Microsoft SharePoint Server 2013 (for multiple browsers)

    Go to Top

    Microsoft Dynamics CRM 2016 Update 1.0 Prerequisites:

    • Essentially the prerequisites listed in the Microsoft Dynamics CRM 2016 Implementation Guide download or Online TechNet for the various CRM components serviced

    Go to Top

    Issues resolved via Microsoft Dynamics CRM 2016 Update 1.0:

    Microsoft Dynamics CRM 2016 Update 1.0 contains fixes for issues reported by customers or discovered via internal testing.

    Fixes released via Microsoft Dynamics CRM 2016 Update 1.0:

    • Resolve incorrect navigation property names during upgrade from CRM 2016 RTM to CRM 2016 Update 1.0
    • Outgoing and incoming e-mail stops processing for all organizations
    • Using Internet Facing Deployment the OWA App is not loaded in Edge browser
    • Using Compose Mode in OWA is adding a known lead into the “To” Field and clicking retry throws an error
    • Incorrect numbers are displaying for Recent Cases and Opportunities on the Record form
    • Unable to create Opportunities if Business Process Flow exists
    • Not able to add members from one Marketing List to another
    • Update logic of Record Creation Rules automatically updates the Regarding Object Entity data
    • Activities, Contacts and Tasks are not synced when connecting CRM Online to Exchange On Premises in Hybrid mode
    • RetrieveInlineSearchResults doesn’t filter lookup types by Read/Append Privilege
    • Incorrectly modified on date displayed in Social Pane for Activity Records created after 6:30 PM
    • Large workflows are slow to execute in CRM Online
    • IOS and Android Dynamics CRM apps fail to configure if an uppercase value is in the organization URL
    • Fixed missing publication warning dialog when user performs any action in Activity Feeds configuration
    • Navigation after Related Record Grid operation is redirected to a Form instead of a View
    • The OptionSet control methods for StatusCode Field is not working
    • Bulk edit on entities causes the Status Reason Field to change back to the default value
    • Incorrect Next Page link for related entities
    • Quote Product, Order Product, and Invoice Product Forms are updated
    • Cloning a Product causes sharing of the image
    • Server Side Synchronization Performance Dashboard should have a name or description that indicates that it is for troubleshooting
    • Can create Navigation properties with the same Name on an Entity
    • Unable to add Contacts from one static Marketing List to another
    • The message “Web browser tying to close the window” appears when attempting to use the CRM app for Outlook in Internet Explorer, or Microsoft Edge
    • Outgoing E-mail, and Incoming E-mail stop processing for the organization
    • Uninstalling a Managed Solution will cause Business Rules to be Deactivated
    • (Microsoft Dynamics CRM Online 2016 Update 1 Only) Slow Performance when opening Customize the System, and other associated Views
    • (Microsoft Dynamics CRM Online 2016 Update 1 Only) Getting error while installing sample data on Finnish (1035), Hungarian (1038), and Norwegian (1044) languages

    Go to Top

    Support for new technologies provided by CRM 2016 Update 1.0:

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

    Microsoft Dynamics CRM 2016 Update 1.0 provides no new support for technologies, though CRM 2016 RTM does. Consult the Microsoft Dynamics 2016 CRM Compatibility List to identify newly-supported technologies.

    Hotfixes and updates that you have to enable or configure manually

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

    • Microsoft Dynamics CRM 2016 Update 0.1: no updates requiring manual configuration
    • Microsoft Dynamics CRM 2016 Update 1.0: Microsoft Dynamics CRM 2016 Update 1 contains updates that you must configure manually.  These include Portal, Field Service, and Project Service, which each require the customer to install the solution from the Office 365 Portal. To receive the product updates, you must “opt in”.  For more information on how to install product updates in Microsoft Dynamics CRM 2016 or Microsoft Dynamics CRM Online, see the following Microsoft TechNet topic: Install product updates

    Go to Top

    Greg Nichols
    Dynamics CRM Senior Premier Field Engineer
    Microsoft Corporation

    Viewing all 393 articles
    Browse latest View live


    Latest Images

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