Noticed that the 2011 version of the Performance Testing Toolkit has been released and is available via pinpoint: http://dynamics.pinpoint.microsoft.com/en-us/applications/performance-toolkit-for-microsoft-dynamics-crm-2011-12884915630
Matt
Noticed that the 2011 version of the Performance Testing Toolkit has been released and is available via pinpoint: http://dynamics.pinpoint.microsoft.com/en-us/applications/performance-toolkit-for-microsoft-dynamics-crm-2011-12884915630
Matt
Posted at 10:28 AM in CRM, CRM 2011 | Permalink | Comments (0) | TrackBack (0)
A few years back, my friend Marco posted a way to leverage CRM's in-line alert display to show a custom error message leveraging the default error window. Wondering if this approach would work on 2011, I found that the Notification area still exists in 2011 and there are some methods exposed via the HTC file that allow for easy manipulation.
The following code is, technically, unsupported and there are no guarantees that this code won't change in the future, but it works. If you add the following code to a web resource and then tie the set_alert function to the onchange event of a field, you can see it operate. The second call will wipe out the displayed notifications.
var mep=1;
function set_alert()
{
var notificationsArea = document.getElementById('crmNotifications');
if (notificationsArea == null)
{
alert('div not found');
return;
}
if (mep==1)
{
notificationsArea.AddNotification('mep2', 2, 'source', 'Warning message');
notificationsArea.AddNotification('mep3', 3, 'source', 'Info message');
notificationsArea.AddNotification('mep1', 1, 'source', 'Critical message');
mep=2;
}
else
{
notificationsArea.SetNotifications(null, null);
mep=1;
}
}
When you have multiple notifcation messages, they will be sorted by the severity as shown here.
Matt Parks
Posted at 06:47 PM in CRM, CRM 2011, CRM Development, XRM | Permalink | Comments (0) | TrackBack (0)
Happened to run across the release of the 2011 version of CCA out on the Marketplace. Finally, we can start playing with the "new and improved" version with 2011.
Matt Parks
The Microsoft CRM web-services normally give you pretty good error messages when you make an invalid request, but occasionally you will get this error message: “Generic Sql Error”. These errors pop up enough that they’ve become a fairly common question on the CRM development forums. The usual responses are to either enable CRM tracing or use SQL Server Profiler to get a better error message. I find that the CRM trace logs don’t always give you anything better that the same generic error message the SDK provides, so SQL profiler is probably the better option. However, if you don’t have experience using the SQL Profiler it can be hard to find the actual error message in the vast amount of data it provides. These are the steps I take to get to the bottom of most CRM “generic SQL” errors using the SQL Profiler:
~Erik Pool
This posting is provided "AS IS" with no warranties, and confers no rights.
Posted at 06:05 PM in CRM, CRM 2011, CRM Development, Errors, Troubleshooting | Permalink | Comments (6)
Rich Choi recently posted a go live checklist for CRM 2011 Online over at the Microsoft CRM Online Team blog. This is a great checklist that contains a lot of the gotchas when deploying CRM 4 or CRM 2011 to a new environment. While the article is tailored for 2011 Online, the recommendations apply to On-Premise and Partner Hosted (Private Cloud) solutions. I highly recommend reviewing these recommendations for your customers and environments.
Microsoft CRM Online - Go Live Checklist
This posting is provided "AS IS" with no warranties, and confers no rights.
I have been releasing "Features of the week" internally for a little over a month now, so this is being posted now to "catch up" with the internal thread. Going forward, I am going to try to post a highlight of one new CRM 2011 feature each week between now and RTM. All of this is based on beta code and is subject to change.
This week’s feature: Role & Privilege Improvements
The role editor itself hasn’t changed much, neither have the depths that privileges support (None, Local, Business Unit, BU + Children, Global) or the type of privileges (Create, Read, Write, Delete, Append, Append To, Assign, Share).
What has changed however are the total number of privileges available, there are easily several new privileges:
A quick glance shows us a number of cool new privileges are available:
Of course this is to be expected, each new CRM 2011 feature that adds new entities would of course add new privileges. The really cool new stuff are the “special privileges” that will enable us to further customer the UI for our users and meet more customer requirements via configuration vs. hacks. They include (I have highlighted a few of my favorites):
|
Privilege |
Purpose / Notes |
|
Manage User Synchronization Filters |
If the privilege does what it says, this is a big one. In CRM 4, if you wanted to use the SDK to modify user’s Outlook Offline Filters you had to actually impersonate that user and then make the request. With this privilege a proxy user (or another user) can do the updates directly without all this extra work. |
|
Delete Audit Partitions View Audit Partitions View Audit History |
Privileges to control access to auditing partitions (more on this later) at a global level. |
|
Override Opportunity Pricing |
I assume this does the same as “Override Quote, Order and Invoice Pricing” that was found in CRM 4. |
|
Override Quote Order Invoice Delete |
Not sure what this does exactly. |
|
Act on behalf of another user |
Delegation |
|
Perform in sync rollup on goals |
Not sure what this does exactly. |
|
Read License Info |
UI Change Only - Moved from the more confusing Create/Read/Delete License info in CRM 4 (which incidentally would prevent users from logging in) In fact License is no longer in the grid at all. |
|
Assign Manager for a user |
Controls access to the Change Manager feature |
|
Enable or Disable Business Unit Enable or Disable User |
UI Change Only - These have been moved down from the “Grid” down to the Miscellaneous Privileges section. |
|
Override Created on or Created By for Records during Data Import |
CRM 4.0 introduced the ability to set the “Override” fields for data imports via the SDK. This is now controlled via a special privilege. |
|
Reparent User Reparent Business Unit Reparent Team |
UI Change Only - These have been moved down from the “Grid” down to the Miscellaneous Privileges section. However, Reparent Team is new. |
|
Service Management: - Delete Own Calendar - Create Own Calendar - Read Own Calendar - Write Own Calendar |
More granular control over the user’s own calendar. Not sure why, but here it is. J |
|
Modify Customizations Constraints |
Not sure what this does exactly. |
|
CRM Online Only (Probably) - Configure Internet Marketing Module - Use Internet Marketing Module |
These are available today in CRM Online 4.0 and will probably be removed from the On-Premise version when it ships. |
Customizations get surprisingly more granular – I imagine it would be easy to break import with a few of these in correctly checked J.
Queues:
To go along with the re-write of Queues, the privileges have been updated with it. You can now control Append, Assign and Share on Queues. In addition, you can select a depth, unlike in CRM 4 which only had “None” or “Global” for Queues.
Teams & More:
Of course my most favorite new privileges are in:
Yup, delete is now available on Team, Business Unit and User! In my previous feature of the week I noted you could now delete Teams. But as you can see here you can now delete Users and Business Units as well.
Also a reminder as mentioned two weeks back, Teams can now have roles assigned to them and users in those Teams gain the total privileges of their roles + the teams roles.
Cheers,
This posting is provided "AS IS" with no warranties, and confers no rights.
Posted at 10:00 AM in CRM, CRM 2011, CRM 2011 - Feature of the week | Permalink
Back in 2008, while at Ascentium, we posted our internal CrmService.js helper. This JavaScript wrapper makes it easier to make CRM SDK calls from with in JavaScript. Today, I am posting a minor update. It's not a major update, but I wanted to post a more recent version post-Avanade merger. This version has a few minor issues fixed and adds a wrapper for Assign. Here is the new wrapper:
Usage - Assign(new owner id, record id, target (same as the WSDL), optional callback)
Example - service.Assign(strNewOwnerId, strPriceQuoteId, "TargetOwnedAC_pricequote");
You can download it here:
Cheers,
This posting is provided "AS IS" with no warranties, and confers no rights.
Posted at 09:47 AM in CRM, XRM | Permalink | Comments (3)
Recently we had a situation, where we needed to import a CRM organization from one environment to another. To help with this, we were sure to make use of the import speed fix in RU8. The challenge though was that the source environment used SQL Reporting Services 2005, while the target environmented used SQL Reporting Services 2008.
During the import we got the following error:
Error| Import Organization (Name=CRMTEST, Id=79a213fe-7f89-df11-95e8-00505692406b) failed with Exception:
Microsoft.Crm.CrmReportingException: The report definition is not valid. Details: The report definition has an invalid target namespace '_http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' which cannot be upgraded. ---> System.Web.Services.Protocols.SoapException: The report definition is not valid. Details: The report definition has an invalid target namespace '_http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' which cannot be upgraded. ---> The report definition is not valid. Details: The report definition has an invalid target namespace '_http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' which cannot be upgraded.
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at Microsoft.Crm.ReportingServices2005.ReportingService2005.CreateReport(String Report, String Parent, Boolean Overwrite, Byte[] Definition, Property[] Properties)
at Microsoft.Crm.Reporting.ReportServer.UploadReport(String path, Byte[] reportDefinition, String name, String description)
--- End of inner exception stack trace ---
at Microsoft.Crm.Reporting.ReportServer.UploadReport(String path, Byte[] reportDefinition, String name, String description)
at Microsoft.Crm.Reporting.ReportServer.UploadReport(SRSReport report, String reportId, String name, String description)
at Microsoft.Crm.Setup.Server.Utility.ReportsUtility.OrganizationPublishReportsScaleGroup(IDbCommand command, Uri reportingUrl, String orgUniqueName)
at Microsoft.Crm.Tools.Admin.DBImportHelper.RePublishReports(IDbCommand command, String organizationUniqueName, Uri reportUrl)
at Microsoft.Crm.Tools.Admin.ImportOrganizationInstaller.Import(Guid organizationId, String organizationUniqueName, String organizationFriendlyName, String sqlServerName, String databaseName, Uri reportServerUrl, String privilegedUserGroupName, String sqlAccessGroupName, String userGroupName, String reportingGroupName, String privilegedReportingGroupName, ICollection`1 users, MultipleTenancy multipleTenancy)
The fix was simple, although not neccessarily obvious. If we read the error, the issue seems clearish: The namespace "http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" which is defined in the RDL of a Report was not found or is invalid.
But why was it not valid or not found? The problem is that CRM relies on the client-side reporting components provided by the Microsoft Report Viewer Control to interact with the SSRS server. In this case, the server only had the 2005 version of the control installed and did not have the 2008 version. Installing the 2008 version and re-running the import fixed the issue. You can download the latest version of this control here:
Enjoy,
This posting is provided "AS IS" with no warranties, and confers no rights.
Posted at 02:35 PM in CRM, Errors, SSRS | Permalink | Comments (0)