CRM 4.0 to CRM 2011 Queues Upgrades

There are lots of improvements and enhancement with regards queue in CRM 2011 and they are mentioned in this article

Now if you migrated your organization from CRM 4.0 system the since for each user CRM 4.0 has two queues as mentioned below
1. User’s Private Queue (i.e. Assign Queue)
2. User’s WIP Queue (i.e. In Progress Queue folder)

While upgrading User’s Private Queue is converted as default queue and renamed user’s full name so if user is name mark smith, in CRM 2011 this user will have only one queue named with full user name

All WIP queue is migrated as it is but on them worker Id set to owning user, so since these were the items in user’s In progress queue in CRM 4.0 they are migrated with working user set as owning user.

If you match your queue details with standard CRM 2011 organization (which was not upgrade from CRM 4.0) then you will know that they have got only one named queue and do not have this additional WIP queue.

If users want to match up this queue experience for CRM 2011 environment (migrated from CRM 4.0 system) to new install of CRM 2011 environment then following ate recommended steps for the sae which are mentioned in following article. this article provides the details but does not provide tool or script to do the job, this post will provide tool and script code to achieve this.

http://msdn.microsoft.com/en-us/library/gg327885.aspx

1. Move all items from WIP queue to user’s default queue and set worker id as well
2. Delete or Deactivate the WIP queue

Now each user can manually do above task but if you got large user base then I guess it is better if system admin can do above task for the same.

Following two ways to achieve this,

Option 1: using CRM API to update relevant queue records (Supported)

I have created application which will move all current WIP queue item to user’s named queue and then disables the WIP queue.

This application is shared below.
CRM2011_WIPQueues

Following is few more details regarding this application for the same.

Step 1: after downloading CRM2011_WIPQueues_Upgrades_EXE.zip,extract the zip file.

Step 2: after extracting run the CRM2011_WIPQueues_Upgrades.exe

Step 3: provide CRM server details and then click on “Move Items“ button. Following are example screen print for the same.

One advantage of this application is it is supported but disadvantage is that it could take more then 2-3 hours if your CRM system got really large records in WIP queues but since we have run this only once I prefer this approach.

However there is another faster (but unsupported) method is mentioned below to achieve the same result.

Option 2: using SQL script **UNSUPPORTED**

System administrator can build SQL script to update all relevant queue item records to change queue id from WIP queue to user’s named queue.

Following example screen print for the script for the same for one user, this script can be downloaded from here and change the USER DOMAIN NAME for the relevant user in the following script. Of course this needs to be run for all users in the system.

-- find out all items present in relevant user's WIP queue
-- update user's domain name in query mentioned below
select * from filteredqueueitem
inner join filteredqueue on
filteredqueueitem.queueid = filteredqueue.queueid
inner join filteredsystemuser on
filteredsystemuser.systemuserid = filteredqueue.ownerid
where queuetypecode = 3
and filteredsystemuser.domainname = 'USER DOMAIN NAME'

--Update items in WIP queue to named queue
-- update user's domain name in query mentioned below
Update queueitembase
set queueid = (select filteredqueue.queueid from filteredqueue
inner join filteredsystemuser on
filteredsystemuser.systemuserid = filteredqueue.ownerid
where queuetypecode = 2
and filteredsystemuser.domainname = 'USER DOMAIN NAME')
where queueid = (
select filteredqueue.queueid from filteredqueue
inner join filteredsystemuser on
filteredsystemuser.systemuserid = filteredqueue.ownerid
where queuetypecode = 3
and filteredsystemuser.domainname = 'USER DOMAIN NAME')

One advantage of this approach is that it will complete the moving with few minutes even if million records needs moving but big disadvantage is that we are making change to SQL directly which is considered as *UNSUPPORTED CHANGE * so if you are going for this route make sure you test this script fully on your development/UAT environment thoroughly before running them in to Live environment.

Hope this helps..

Cheers,
MayankP:)

Advertisements

CRM 2011 Chart: Drill Down enable/disable

Recently we noticed few charts in CRM 2011 displays drill down while other does not display drill down for the same.

For example standard Sales Pipe line chart report does not display drill down, after little investigation found that chard is displaying drill down if field used to display data set as Searchable to YES (as shown in the screen print below)

So your chart will display drill down if axis displays a field which got value searchable set to Yes.

Hope this helps..

Cheers,
MayankP:)

CRM 2011 Issues/Enhancements Feedback

Recently few of our customer and CRM user’s reports few issues/enhancement requested which I have posted them on Microsoft Connect Web site at https://connect.microsoft.com/dynamicssuggestions/Feedback

Following details regarding them and if you feel they need to be address please vote for them as Important on relevant feedback link provide below.

Feedback 1: CRM 2011 Outlook client Views are not sorted alphabetically

CRM 2011 Outlook client Views are not sorted alphabetically while IE views are sorted alphabetically. For example below screen print shows CRM 2011 IE Views sorted alphabetically working okay.

While CRM 2011 Outlook Views are seems to be sorted on created on date rather than alphabetically which is problematic if users got more than 10 views.

If you agree with me that outlook views should be sorted alphabetically then please Vote for this on the following page (Note: – you need to login with your Window Live/Hotmail account for the same)

https://connect.microsoft.com/dynamicssuggestions/feedback/details/742518/crm-2011-outlook-client-view-not-sorted-alphabetically

Feedback 2: Green Refresh button is missing on outlook client view.

If user want to refresh outlook client view then user have to View tab and then hit refresh button, it is just un-necessary one more click and also this behaviour is not same as IE version. In IE version we have got this green button in all views.

Of course we can do workaround to have Views -> Refresh button added in Quick Access toolbar as workaround but ideally it would be better if both integration works the same way.

For more information regarding this please refer following blog articles.
http://mscrmonline.wordpress.com/2011/07/24/how-to-refresh-a-microsoft-crm-2011-outlook-client-view/

http://www.dowawado.com/2012/02/08/crm-2011-how-to-refresh-a-view-in-the-outlook-client/

You can vote for this feedback here

Feedback 3: CRM 2011 View Selector not filtering custom views, only filters system views in Dashboard.

If user create new dashboard and adds list component and wants to view certain views only as shows in below screen print.

So we want system to display only selected one view in this example but when user checks out list it displays all the views as shown below so we want this feature to be corrected.

If you agree with me that above feature needs to be corrected then please Vote for this on the following page.

https://connect.microsoft.com/dynamicssuggestions/feedback/details/742536/crm-2011-view-selector-not-filtering-custom-views-only-filters-system-views-in-dashboard

Cheers,
MayankP

CRM 2011 Email router Issue

Problem

Recently while publishing CRM 2011 email router on our CRM 2011 system we started seeing following error

#17174 – An error occurred while validating the e-mail message with subject “email subject” in mailbox “mailbox email”. Microsoft.Crm.Tools.Email.Providers.EmailException: E-mails for address “mailbox email”. in forward mailbox could not be processed as the e-mail address is not associated with any approved forward mailbox user or queue record in CRM.
at Microsoft.Crm.Tools.Email.Providers.CrmPollingMailboxProvider.CheckForApprovedForwardMailboxUsersOrQueue(EmailMessage emailMessage)
at Microsoft.Crm.Tools.Email.Providers.ExchangePollingMailboxProvider.ValidateMessageInternal(EmailMessage emailMessage)
at Microsoft.Crm.Tools.Email.Providers.CrmPollingMailboxProvider.ValidateMessage(EmailMessage emailMessage)
at Microsoft.Crm.Tools.Email.Providers.CrmPollingMailboxProvider.Run()

Resolution

Step 1 -> Log in to CRM system and go to Settings.

Step 2 -> click business management and then Queues.

Step 3 -> select view called “Queues: Primary Email (Pending Approval)” , this will return relevant queues for which email address is not approved yet

Step 4: select all of them and hit Approval email button , this should resolve this issue.

Hope this helps

Regards,
MayankP 🙂

CRM Server Report Issue

If you have custom workflow or application which renders SSRS report in CRM and generates PDF or excel as output and it you are using the same user to connect reporting service and generate this report then if you bulk generate lots of records then CRM throws following error on report server.

The report server has detected a possible denial of service attack. The report server is dropping requests for service from the IP address XXX.XX.XXX.XX.

This is because reporting service by default allows only 20 requests for same user. This is setting in Reporting Service configuration and you can update to your required value to fix this issue. (see below screen print for the same which updates value to 250)

Above reporting service configuration file can be found in C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer folder.

For more information on all Reporting service configurations please refer following article
http://msdn.microsoft.com/en-us/library/ms157273.aspx

Hope this helps..

Cheers,
MayankP 🙂

CRM 2011 Queue emails automatic contact creation issue

In CRM 2011, queues functionality is enhanced and changed as lot from CRM 4.0. You can read more about the changes in this article.

This current article is specific to behaviour with regarding to incoming email in to queue in CRM 2011. So if you received email in queue in CRM 2011 and if contact is not recognized by system automatically then it creates new contact automatically.

This is issue for one of customer because they did not want to end having lots of contacts created unnecessarily so we decided to turn off this feature for queues.

Solution

Following are steps to turn off this automatic feature in CRM 2011.

Step 1: Simply log on to CRM 2011 with administrative account (i.e. the account that was used to install CRM 2011 and CRM 2011 email router)

Step 2: go to File -> Options, this should open up Set Personal option page

Step 3: go to Email tab and un-tick option to automatically create records in CRM

Step 4: Click OK, Done!!

Hope this helps..

Cheers,
MayankP:)

CRM 2011 Custom workflow error

Problem

Recently we encounter following error coming from some of custom workflow in CRM 2011 organization.

Workflow paused due to error: Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Expected non-empty Guid.Detail: -2147220989 Expected non-empty Guid. 2012-02-23T10:15:53.6646892Z -2147220970 System.ArgumentException: Expected non-empty Guid. Parameter name: id 2012-02-23T10:15:53.6646892Z at Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.Retrieve(String entityName, Guid id, ColumnSet columnSet, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType) at Microsoft.Crm.Extensibility.InprocessServiceProxy.RetrieveCore(String entityName, Guid id, ColumnSet columnSet) at Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy.Retrieve(String entityName, Guid id, ColumnSet columnSet) at Microsoft.Crm.Workflow.Services.RetrieveActivityService.c__DisplayClass1.b__0(IOrganizationService sdkService) at Microsoft.Crm.Workflow.Services.ActivityServiceBase.ExecuteInTransactedContext(ActivityDelegate activityDelegate) at Microsoft.Crm.Workflow.Services.RetrieveActivityService.ExecuteInternal(ActivityContext executionContext, RetrieveEntity retrieveEntity) at Microsoft.Crm.Workflow.Services.RetrieveActivityService.Execute(ActivityContext executionContext, RetrieveEntity retrieveEntity) at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

Solution

As per MS KB article this issue is fixed in CRM 2011 roll up 4, But for us even after applying roll up 6 this issue is not getting resolved.

so we have to update existing custom workflow to have a work around to fix this issue, following is more detail on this workaround.

So this error comes if you returning entity look up as return parameter from custom workflow and this error comes if your custom workflow returns null look up system throws above error.

To resolve this we put additional parameters called Dummy (Account GUID) as string and Success then pass test account record GUID as parameter.

[Input("Dummy")]
public InArgument Dummy { get; set; }

[Output("success")]
public OutArgument success { get; set; }

we also updated custom workflow code to return this dummy account if we are not able return correct account.


// find matching account
Guid accountId = FindAccount(crmService, perameterEmail, perameterName);

if (!accountId.Equals(Guid.Empty))
{
this.accountId.Set(executionContext, new EntityReference("account", accountId));
success.Set(executionContext, true);
}
else
{

//return dummy account

this.accountId.Set(executionContext, new EntityReference("account", new Guid(Dummy.Get(executionContext))));
success.Set(executionContext, false);
}

In workflow editor we just need to check if this returned success flag, if it is true then we got correct Id and if it is false then it is dummy account.

So this workaround resolves this issue not nice but effective.

Hope this helps..

Cheers,
MayankP:)