2010/02/25

CRM slow in IE browsers!

Is browsing always slow in Internet Explorer? Does it frequently stop responding (hang), or stop working (crash)? Do you receive error messages that indicate that Internet Explorer has "encountered a problem and needs to close"? Or that a Visual C++ "runtime error" has occurred in Iexplore.exe?

If so, then you might want to try resetting Internet Explorer. When you reset Internet Explorer settings, all add-ons and customizations are deleted, and you basically start with a fresh version of Internet Explorer. This article helps you reset Internet Explorer.



Fix this problem
Microsoft Fix it 50195

Note This fix does not work in Windows 7. Instead, you can use the Internet Explorer troubleshooters to achieve this automatically.

Note This wizard may be in English only; however, the automatic fix also works for other language versions of Windows.

Note If you are not on the computer that has the problem, you can save the automatic fix to a flash drive or to a CD, and then you can run it on the computer that has the problem.

If the problem is caused by damaged or incompatible Internet Explorer settings or add-ons, you can usually resolve the problem by resetting Internet Explorer settings.

To use the Reset Internet Explorer Settings feature from Control Panel, follow these steps:
Exit all programs, including Internet Explorer (if it is running).
If you use Windows XP, click Start, and then click Run. Type the following command in the Open box, and then press ENTER:
inetcpl.cpl
If you use Windows Vista, click StartCollapse this imageExpand this image. Type the following command in the Start Search box, and then press ENTER:
inetcpl.cpl
The Internet Options dialog box appears.
Click the Advanced tab.
Under Reset Internet Explorer settings, click Reset. Then click Reset again.
When Internet Explorer finishes resetting the settings, click Close in the Reset Internet Explorer Settings dialog box.
Start Internet Explorer again.

To reset Internet Explorer automatically, click the Fix this problem link. Then click Run in the File Download dialog box, and follow the steps in this wizard.

2010/02/12

Update Rollup 9 for Microsoft Dynamics CRM 4.0

Update Rollup 9 for Microsoft Dynamics CRM 4.0 resolves the following issues that were not previously documented in a Knowledge Base article:
• When a user runs code that uses the RetrieveAllChildUsersSystemUserRequest method to find the direct reports of another user, you receive the following error message:
The value passed for ConditionOperator.In is empty.
This problem occurs if the user who runs the code is not a manager.
• After you import customizations from Microsoft Dynamics CRM Online to Microsoft Dynamics CRM 4.0, Microsoft Dynamics CRM 4.0 incorrectly uses the SystemUser entity form that is used in Microsoft Dynamics CRM Online.
• Assume that you use Microsoft Dynamics CRM 4.0 in the Internet-Facing Deployment (IFD) mode. When you export data from Microsoft Dynamics CRM 4.0 to an Microsoft Excel worksheet as a dynamic worksheet, a PrimaryKey column of entities is not exported to the Excel worksheet. For example, when you export contacts to an Excel worksheet, the ContactId column is not exported to the Excel worksheet.
• Assume that you enable the Secure Sockets Layer (SSL) setting in Internet Explorer 6. When you use Internet Explorer 6 to run Microsoft Dynamics CRM 4.0, you receive the following security warning message:
This page contains both secure and nonsecure items.
This problem occurs when you create a new report or when you run the Duplicate Detection function.
• Consider the following scenario:
o You run a mail merge process for marketing e-mail messages in the Microsoft dynamics CRM 4.0 client for Outlook.
o The merged e-mail message is addressed to a lead.
o In this e-mail message, you specify an unsubscribing link so that the lead can unsubscribe the marketing materials.
In this scenario, Microsoft Dynamics CRM 4.0 does not consider the unsubscribing request when the lead sends an unsubscribing e-mail message by clicking the link.
• Assume that you use the InvalidPluginExecutionException handler in a custom plug-in and you specify a custom exception message for the handler. When you upload an attachment to a Microsoft Dynamics CRM record, you receive the following exception message:
File Could Not Be Uploaded.
You expect to receive the custom exception message that you specified.
• Consider the following scenario. You select to use the Custom option when you install Microsoft Dynamics CRM 4.0. Then, you click Next, you click Back, and then you select to use the Typical option to install Microsoft Dynamics CRM 4.0. In this scenario, the Platform Server role is deleted when you run the Repair process during the installation of Microsoft Dynamics CRM 4.0.
• Consider the following scenario:
o You use a domain account for the CRMAppPool application pool.
o You enable the Microsoft Dynamics CRM tracing.
In this scenario, the following error message for the domain account is logged in the Application log several times:
User Was Not Found.
• Assume that you use the ISO-2022-JP encoding for POP3 e-mail messages. When the Microsoft Dynamics CRM E-Mail Router tracks an e-mail message, you notice garbage characters in the e-mail message.
• Consider the following scenario:
o You create a workflow to send an e-mail message that uses an e-mail template.
o The template contains HTML code.
o You run the workflow.
In this scenario, the e-mail message is displayed as plain text without HTML code.
• When you include the address of a recipient in an e-mail message by using single straight quotation marks (''), the e-mail message cannot be tracked in Microsoft Dynamics CRM 4.0.
• When you use a lookup field to update a record in an entity form, the corresponding note information does not appear in the entity form.
• If you block the ActiveX control by using the CLSID value "{00000000-0000-0000-0000-000000000000}," you cannot log on to the Microsoft Dynamics CRM 4.0 Web client. Additionally, you are redirected to the following Web page:
http://common/error/unsupportedSecurity.aspx
• You cannot receive all e-mail messages in Microsoft Dynamics CRM 4.0 if the mail server uses a time setting that differs from the time setting that is used by the Microsoft Dynamics CRM E-mail Router.
• The resource name unexpectedly changes to "Selection Rule" after you save a service activity.
• Assume that you create a record in the Phone Call form in Microsoft Dynamics CRM for Microsoft Office Outlook with Offline Access. When you change the Direction value of the record, you receive the following error message:
A record with these values already exists. A duplicate record cannot be created. Select one or more unique values and try again.
• When multiple levels of menus are displayed in the Microsoft Dynamics CRM 4.0 Web client, the sub menus are displayed behind the main menus. This problem occurs if you use Microsoft Internet Explorer 8.0.

2010/02/10

Editing the CRM Site Map made so easy!!!!...

Launch the MSDYCRM4.0_Demonstration Tools.exe

Use the Site Map Editor to modify the contents of the Microsoft Dynamics CRM Navigation Pane. You can use the editor to move, add, or delete items from the navigation pane.
NOTE: It’s strongly recommended that you back up your CRM data before using this tool.




• Select the hyperlink “The application is not yet connected to Microsoft Dynamics CRM, Click here to connect”. Located on the top of the page as shown below .



• Complete the login credentials and press “connect”

• Select the correct Organization from the dropdown


Modify the Existing CRM Navigation Pane
To load and edit the current Navigation Pane for CRM:
1. Under Available Tools, click Site Map Editor.
Load the sitemap from CRM by selecting “Open from CRM”

Under Open and Save, click Open from CRM.


The site map appears as a tree in the Edit Site Map box.
To add a navigational section like sales, marketing select add. This will add a section to your crm navigational pane.


Add an Organizational group
Adding a group under the section select add Under

To add a group underneath the section just created, select the group created and select the option “Add Under”. This will allow you to add a group.To display all the groups underneath the main section select the tick box for display groups.)This will use a lot of real-estate under your navigation pane.)
To link a entity or call a url being on the select group you added select “Add Under”.
Groups organize sub-areas for usability purposes. To add a group:
1. In the site map tree, select the entity underwhich you want to add the group, and then click Add Under.
2. In the Add Group dialog, under Name, enter the title for this group. Then click OK.

Sub-areas bring up the actual user interface for accomplishing tasks, such as a website or the lists/forms associated with an entity. To create a subarea:
1. In the site map tree, select a group and then click Add Under or select an existing subarea and click Add Under or Add (to add the new subarea above the selected subarea).
2. In the Sub-Area dialog:
• Under Entity, select the entity to add as a sub-area.
• Under URL, enter the URL to add as a sub-area. Click the Test URL link to verify the URL can be accessed. If you selected URL:
o Under Name, enter the user-friendly name that should appear in the Navigation Pane for this URL.
o Under Icon, enter a URL specifying the location for a graphic file that will act as the icon for this sub-area. Graphics files may be .png, .gif, .bmp, or .jpg files.




Modify Existing Areas, Groups, and Subareas
You can edit the site map to modify the properties of existing items, move them, and delete them:
Edit items
Select the item you want to edit and then click Edit. Change the title or other information for the item.
Remove items
Select the item you want to remove and then click Remove. If you select an area or a group, all of the items under the area and group will also be removed.
Move items
To move an item up or down, select the item and then click Move Up or Move Down. Areas are moved relative to the nearest area. Groups are moved relative to the nearest group. For example, if you select a group and click Move Down, the group and all its subordinate items will move under the next group. Sub-areas are moved relative to the nearest sub-area, but within their group.


Select Publish to CRM to test the changes.
After you’ve modified the site map to reflect the Navigation Pane you want to see in the application, you must publish it:
• On the Site Map Editor page, after you have created the site map, under Open and Save, click Publish to CRM.
Save a Site Map for Future Use
You can save the site map you’ve created for future use. To save the site map:
1. On the Site Map Editor page, after you have created the site map, under Open and Save, click Save.
2. In the Save dialog, specify the location and filename for the new XML file. Then click OK.



Hides the associated Views buttons/More Actions menu drop down

/* Hides the associated Views buttons. i.e Hides the add existing button. */
/* NB: If called multiple times, the settings of the previous calls are overwritten by the final one! */
/* A menu element on the "More actions" drop-down menu can be hidden
* by adding a string such as 'More Actions::Activate' to the buttonTitles array.
*/
HideAssociatedViewButtons = function(loadAreaId, buttonTitles)
{
var navElement = document.getElementById('nav_' + loadAreaId);
if (navElement != null)
{
navElement.onclick = function LoadAreaOverride()
{
// Call the original CRM method to launch the navigation link and create area iFrame
loadArea(loadAreaId);
HideViewButtons(document.getElementById(loadAreaId + 'Frame'), buttonTitles);
}
}
}

/* Used internally by the 'HideAssociatedViewButtons' method */
HideViewButtons = function(Iframe, buttonTitles)
{
if (Iframe != null)
{
Iframe.onreadystatechange = function HideTitledButtons()
{
if (Iframe.readyState == 'complete')
{
var iFrame = frames[window.event.srcElement.id];
var liElements = iFrame.document.getElementsByTagName('li');
for (var j = 0; j < buttonTitles.length; j++)
{
buttonTitleParts = buttonTitles[j].split('::');
if (buttonTitleParts.length > 0)
{
buttonTitle = buttonTitleParts[0];
for (var i = 0; i < liElements.length; i++)
{
liElement = liElements[i];
if (liElement.getAttribute('title') == buttonTitle)
{
if (buttonTitleParts.length == 1)
{
liElement.style.display = 'none';
break;
}
else
{
/* We want to hide a menu item in a drop-down menu.
Find the descendant text element with the specified text.
Then find its parent list item and hide it:
*/
menuText = buttonTitleParts[1];
var spanElements = liElement.getElementsByTagName('span');

for (var k = 0; k < spanElements.length; k++)
{
spanElement = spanElements[k];
if (spanElement.className == 'ms-crm-MenuItem-Text' )
{
textElement = spanElement.firstChild;
if (textElement != null && textElement.nodeType == 3) /* 3 = Node.TEXT_NODE */
{
if (textElement.data == menuText)
{
liMenuItemElement
= spanElement.parentNode.parentNode.parentNode;
liMenuItemElement.style.display = 'none';
break;
}
}
}
}
}
}
}
}
}
}
}
}
}

2010/02/03

Adding tooltips to CRM and help developers getting the attribute name using the tooltip

Found the wonderful post from Andriy on his blog Setting the description field of the attribute as a tooltip in CRM.
We changed the code a bit to make it easier for developers to access the attribute name based on the field's tooltip.

Step 1: Copy the code in onload event of the form
at the bottom of the post.
Step 2:Publish the changes
Step 3:Load the relevant page
Step 4:Click with your mouse on the display name of attribute

Step 5:Keeping your (Crtl) keyboard key in, click with your mouse on the tooltip.
Step 6: Open Notepad
Step 7: press (Crtl +v) and the database name will be pasted in notepad.


You will not have to have the customization window open any more to see the attributes and database names.

SetTooltips = function() {
try {
var request = "" +
"<?xml version="1.0" encoding="utf-8"?>" +
"<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">" +
GenerateAuthenticationHeader() +
" <soap:Body>" +
" <Execute xmlns="http://schemas.microsoft.com/crm/2007/WebServices">" +
" <Request xsi:type="RetrieveEntityRequest">" +
" <RetrieveAsIfPublished>true</RetrieveAsIfPublished>" +
" <EntityItems>IncludeAttributes</EntityItems>" +
" <LogicalName>" + crmForm.ObjectTypeName + "</LogicalName>" +
" </Request>" +
" </Execute>" +
" </soap:Body>" +
"</soap:Envelope>";

var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

xmlHttpRequest.Open("POST", "/mscrmservices/2007/MetadataService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Execute");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", request.length);
xmlHttpRequest.send(request);

var result = xmlHttpRequest.responseXML;

for (var i = 0; i < crmForm.all.length; i++)
if (crmForm.all[i].title != null && crmForm.all[i].title != 'undefined') {
var fieldName = crmForm.all[i].id;

var desc = result.selectSingleNode("//EntityMetadata/Attributes/Attribute[LogicalName='" + fieldName + "']/Description/UserLocLabel/Label");
try {
if (desc != null) {
crmForm.all[fieldName + '_c'].title = desc.nodeTypedValue;
crmForm.all[fieldName + '_d'].title = desc.nodeTypedValue;
}
crmForm.all[fieldName + '_c'].children[0].onclick = function() { copyFieldNameToClipboard(fieldName) };
}
catch (e) { }
}
} catch (e) {
}

function copyFieldNameToClipboard(fieldName) {
if (event.srcElement.tagName.toLowerCase() == 'label' && event.ctrlKey)
clipboardData.setData('text', event.srcElement.attributes['for'].value);
}
}

setTimeout('SetTooltips();', 1500);

2010/02/01

Cannot add users in crm using "Add Multiple Users"

Please see below for the solution :
If you do have more than one, please add a String: "PreferredDC" to the MSCRM hive in the registry on the CRM Server (HKLM - software - Microsoft - MSCRM) Add in the FQDN of the domain controller within your environment which holds the user domain accounts.

Change the Search order in the registry of the CRM server and point to Your Primary Domain Controller. To do this make the following registry change: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]"SearchList"= DCName. Change the "DCName" to your Primary Domain Controllers name You should use the FQDN of the Domain Controller where the DNS Server is held and where the CRM Domain accounts are. You MUST reboot the CRM Server in order for these change to take effect.