« September 2008 | Main | November 2008 »
October 2008
October 31, 2008
MSCRM Campaign Activities Will Not Distribute and Become Stuck "In Progress"
Issue: When distributing a Campaign Activity for a Marketing List (or Lists) that total 5000 records or more, the Activity becomes stuck in an "In Progress" state. The activities aren't created, but they don't fail either. They're just...stuck.
Cause: The high number of Contact, Account, and/or Lead records. 5000 is the number to use, though it's not exact. It is a good rule of thumb though. Note that is also the total amount no matter the type. (Contact, Account, or Lead)
Solution:
1. Click Start, click Run, type regedit in the Open box, and then click OK
2. Back-up your Registry by saving it to a secure location
3. Locate and then select the following registry subkey: HKEY_LOCAL_MACHINE\Software\Microsoft\MSCRM
4. On the Edit menu, point to New, and then click DWORD Value
5. Type TurnOffFetchThrottling, and then press ENTER
6. Right-click TurnOffFetchThrottling, and then click Modify
7. Type a number other than 0 in the Value data box, and then click OK
8. Restart the CRM machine
9. Open the Campaign Activity in question and redistribute the Campaign Activity and the individual activities should be created.
Extremely Important Note: This can potentially cause performance issues. If it does, undo the steps above (or simply change the TurnOffFetchThrottling value to 0) and restart the CRM server again. Then make sure you're not distributing Campaign Activities for Marketing Lists of 5000 records or more. Instead, accomplish the same task by using multiple Marketing Lists made up of a lesser number of records.
Posted by Ruston Eads on October 31, 2008 at 04:04 PM in Microsoft CRM Tricks and Tips | Permalink | Comments (5) | TrackBack (0)
October 30, 2008
Two-Column Fields in E-Mail Preview View
Scott Sewell was asking me about something strange that he noticed about the E-mail entity preview in Microsoft Dynamics CRM 4.0. If you don't know the entity preview form appears in views when you click the Preview button displayed in each row. The entity preview shows additional record details without opening the record for editing. The entity preview fields and layout can be customized just like any other view.
The strange behavior that we noticed was that when you add a field to the E-mail preview, CRM does not allow you to format it to span two columns. Most other entities allow two column fields in the preview; however, E-mail does not.
Unfortunately, this appears to be a bug. However, there is a workaround.
1. Add the attribute to the E-mail Preview View.
2. Export customizations for the E-mail entity and open the XML in the editor of your choice.
3. Search for "Preview." You should find a line that looks something like this:
<entity name="email" objecttypecode="4202">
<form id="{77115700-284e-438e-ab63-276332422250}" type="preview">
4. Below that line, you will see entries for the attributes in the entity preview. For example, this is the
<cell auto="false" showlabel="true" locklevel="0" rowspan="1" colspan="1" id="{dc87296a-7e3c-45f1-946a-6db5d9a7efd6}">
<labels>
<label description="Created By" languagecode="1033" />
</labels>
<control id="createdby" classid="{270BD3DB-D9AF-4782-9025-509E298DEC0A}" datafieldname="createdby" disabled="false" />
</cell>
4. Change the first row to colspan="2." If there are two <cell> entries in this section between <row> tags, put <row> </row> tags around both cells in the xml, so the cells will be two columns wide and be in separate rows.
5. Save your e-mail configuration XML, import to CRM and publish changes.
Your E-mail Preview will now have two-column fields
Posted by Joel Lindstrom on October 30, 2008 at 10:40 PM in Microsoft CRM Customizations | Permalink | Comments (1) | TrackBack (0)
SQL Timeout During CRM Version 4.0 Installation
Situation: during an installation of Microsoft CRM version 4.0, all of the environment checks passed with the exception of the SQL Server. The resulting error in the environment check is a SQL Server Timeout Error.
In troubleshooting the error, the following was discovered in the event log of the SQL server:
The error is "FCB: Open Failed. Could not open file…"
Resolution: As it turns out, the Operating System on the SQL Server is the 64 bit version of Windows Server 2003. However, the client had installed the 32 bit version of SQL Server 2005. This is not a supported configuration for Microsoft CRM version 4.0. The fix is to uninstall the 32 bit version of SQL Server 2005 and install the 64 bit version.
Posted by Jason Farmer on October 30, 2008 at 11:10 AM | Permalink | Comments (0) | TrackBack (0)
October 29, 2008
Storing Configuration Data for Plugins
I recently read Mitch Milam's post on the CRM Team blog on passing configur ation data to a plugin. I like his approach and had even have done it a few times prior to the publishing of his article. Lately, though, I've been keen on storing the configuration data not within the plugin configuration, but within custom CRM entities. This makes for a super-slick way of saving configuration information that does not require having to fire up the Plugin Registration Tool (it looks good in demos, also!)
I first took this approach a while back when doing a javascript version of custom auto-incrementing values, but I've started to structure this a little differently. While in that post, I utilized a "catch-all" setting entity, but a better approach might be to utilize a configuration entity for each different kind of configuration. This allows for even more flexibility, in my opinion.
So, taking a look back at the auto-incrementing solution, let's assume we're doing the same thing with a plugin.
Posted by Will Wilson on October 29, 2008 at 09:25 PM in Microsoft CRM Customizations | Permalink | Comments (2) | TrackBack (0)
October 28, 2008
Configuring the CRM 4.0 Outlook client with IFD
When configuring the CRM 4.0 Outlook, there are a few considerations to keep in mind if the user plans to connect to CRM via IFD either some or all of the time. In the most typical scenario, the user will need to access CRM over the internet only part of the time, while in most other instances the user connects via the intranet to CRM either through a local connection to the network or via VPN. In this scenario, the user needs to be connected to the intranet prior to running the configuration wizard and specify both the intranet address and extranet web address accordingly. While this is very straight-forward, if users are planning to connect via IFD exclusively (for example, if the user works remotely and does not ever connect to the intranet via vpn), then this needs to be taken into consideration when providing instructions to users on how to configure the CRM 4.0 Outlook client as I've found this method of configuring the outlook client a bit confusing to end users and administrators alike when presented with the available options in the configuration wizard.
When the wizard is first launched, the user is presented with two options for connecting to Microsoft Dynamics CRM - "My company" or "An online service provider". While at first glance the option for "online service provider" might appear to be applicable only for users connecting to Microsoft Dyanmics CRM Online (The CRM online hosting service provided by Microsoft), this option is in fact applicable to any users planning to use IFD exclusively to connect to their companies on-premise CRM system. If a user in this scenario chooses the "My company" option, the intranet address field is required. If the user who does not have access to the intranet fills the internal URL into the intranet address field, the connection verification test will obviously fail, and if the user attempts to put in the IFD URL in both of these fields, the connection verification test will also fail due to the connection mechanism the wizard uses. The simple solution is to make sure that in this instance users are always choosing "An online service provider", which will only prompt for the external IFD URL.
Posted by Rob Parrott on October 28, 2008 at 03:28 PM | Permalink | Comments (2) | TrackBack (0)
Considerations when configuring sitemap to display dashboard reports
When using dashboards in CRM, in most instances these objects will be exposed through a Sharepoint webpart, but keep in mind that dashboard reports can also be exposed in CRM via a URL in sitemap. While this method doesn't offer quite the flexibility as that found in Sharepoint, if a client doesn't have a sharepoint server or has issues with authenticating to Sharepoint (as can happen when users access CRM via IFD), this can be a good alternative. One thing to keep in mind with this approach is that the report might be using a URL with what an xml parser would consider reserved characters such as an ampersand symbol, which can be a common delimiter in report URL's. This can extend to other types of reserved characters but in our example we will talk about the & exclusively.
For example, consider the URL listed below. If I were to paste this into a browser in the source system, it would resolve the dashboard report just fine in a browser, but attempting to use this same URL in sitemap (an xml document) would render the xml malformed and error out when attempting to import it into CRM.
The solution in this case is to use a pre-defined character reference for the & symbol so that the resulting XML in sitemap can be parsed properly. Using our previous example, this is how the URL should appear in sitemap. Note that the & is now followed by amp;
https://crm.customerserver.com/NOD/crmreports/viewer/viewer.aspx?id={93B4703E-E693-DD11-B0C9-0050569B3651}&helpID=BookingsDashboard1.rdl&action=filter
Keep in mind that attempting to use this URL in a browser URL address will result in errors as it's not going to be able to interpret the character reference . So the true test is to put copy this URL into sitemap (customizations.xml) and opening it in an xml parser - the xml parser should now be able to clarify which part of the code is the content and which part is the tag and transform the URL accordingly, as shown below:
</SubArea> <SubArea Id="Dashboard" Title="Dashboard" Url="https://crm.customerserver.com/NOD/crmreports/viewer/viewer.aspx?id={93B4703E-E693-DD11-B0C9-0050569B3651}&helpID=BookingsDashboard1.rdl&action=filter" Icon="/_imgs/bar_bottom_ico_reports.gif" /> - <SubArea Id="nav_reports" Entity="report" Url="/CRMReports/home_reports.aspx" DescriptionResourceId="Reports_Description"> <Privilege Entity="report" Privilege="Read" /> </SubArea>
Posted by Rob Parrott on October 28, 2008 at 11:37 AM | Permalink | Comments (2) | TrackBack (0)
October 24, 2008
"Unable to Load Client Print Control" message when printing CRM v4.0 reports
Issue: When clicking the Print icon to print a CRM v4.0 report (in a SQL Server 2005 database) you receive the message "Unable to Load Client Print Control" and the report does not print.
Cause: Windows Security Update KB956391, an automatic security update. Once installed it causes the issue above with Windows Server 2003, Windows XP, and possibly others. Windows Vista machines do not appear to be affected.
Solution: Install the fixes below on the necessary servers and reboot each server.
CRM Server:
Microsoft Report Viewer Redistributable 2005 Service Pack 1 http://www.microsoft.com/downloads/details.aspx?FamilyID=82833f27-081d-4b72-83ef-2836360a904d&DisplayLang=en
SQL Server:
Security Update for SQL Server 2005 Service Pack 2 (KB954606) http://www.microsoft.com/downloads/details.aspx?FamilyID=4603c722-2468-4adb-b945-2ed0458b8f47&DisplayLang=en#filelist
SRS Server (if separate from SQL):
Security Update for SQL Server 2005 Service Pack 2 (KB954606) http://www.microsoft.com/downloads/details.aspx?FamilyID=4603c722-2468-4adb-b945-2ed0458b8f47&DisplayLang=en#filelist
Note - if the SQL Server and SRS Server are on the same box, you only have to apply KB954606 to that box.
Again, restart the affected servers. The next time a client prints a report, they will be prompted to install a new version of the view control. Just click install and the Print window will open.
Posted by Ruston Eads on October 24, 2008 at 10:13 AM in Microsoft CRM Reporting | Permalink | Comments (5) | TrackBack (0)
October 22, 2008
Recovering Stock CRM 4.0 Reports
I have a habit of wanting to remove the canned reports from CRM after an installation if it is determined that they are not needed for a particular environment. I find that some users don't want to be distracted by reports they'll never run, so this is something you can do to help keep the report area clean. But what happens if we end up using some functionality in CRM that we didn't before that leads us to want one of the standard reports back? Or what if you've modified one of the standard reports and wish to revert back to the original?
Dude, Where's My Report?
You can locate the canned reports by browsing to the \Server\reports\mscrm folder of the Microsoft Dynamics CRM 4.0 cd. This will have all of the standard reports that are installed with version 4.0.
Posted by Will Wilson on October 22, 2008 at 03:32 PM | Permalink | Comments (0) | TrackBack (0)
October 17, 2008
GPS Point-of-Interest File Mashup
I've been wanting to try some sort of solution for creating a Point-of-Interest file (POI) for my Garmin Nuvi. The addresses in my POI file would be for those customers in our CRM that have projects I'm currently working on.
As you read this post, you may notice that I'm building upon several tricks and bits of functionality from earlier posts. After the jump, I'll walk through each component of the mashup. I won't be going into much technical detail since this is just taking existing pieces laid out earlier and throwing them together to make something cool.
Posted by Will Wilson on October 17, 2008 at 01:08 PM | Permalink | Comments (2) | TrackBack (0)
October 16, 2008
Exporting Views as Text Files
CRM has a great piece of functionality that allows you to export views into Excel worksheets, but sometimes a simple delimited text file may be all you need. I created a quick page that you can drop into your ISV subdirectory (this assumes you're using CRM 4.0, but you can convert this to 3.0 code without too much hassle) that provides this piece of functionality.
This is a pretty lengthy post, so we'll get to the good stuff after the jump...
Posted by Will Wilson on October 16, 2008 at 10:27 PM | Permalink | Comments (0) | TrackBack (0)
October 10, 2008
Additional Javascript Snippet for ISV.Config
A short while ago, I wrote about passing view id's using javascript in ISV.config. That post demonstrates detecting a current view's id and also which type of view it is. You can also detect what the Object Type Code of the view's entity is:
var sOtc = top.stage.crmGrid.GetParameter('otc');
alert('This view returns records with an object type code of ' + sOtc);
Posted by Will Wilson on October 10, 2008 at 08:31 AM | Permalink | Comments (0) | TrackBack (0)
Managing and scheduling a customer reference program in Microsoft Dynamics CRM 4.0
Earlier this week I was honored to be published on the Microsoft CRM Team Blog. Thanks to Microsoft for the invitation.
This is what I posted:
In a tight economy, it is critical for a company to distinguish itself from competitors. One of the best ways to do this is with a well-managed customer reference program. A good reference from one of your clients can carry much more weight with prospective clients than what you tell them. However, If you don’t centrally manage this process, sales people will have to spend a lot of time finding references, taking time away from selling. Some of the other challenges include matching reference accounts with potential customers based on product or geographic area, and ensuring that you don’t overload your best references with too many requests for reference calls or visits.
Microsoft Dynamics CRM 4.0 can help you manage a reference program and schedule reference calls and visits.
Managing Reference Accounts
The best approach to identify which accounts are reference accounts depends on the nature of your business. If all reference accounts can reference any of your products, you could just add a checkbox to the account to flag reference accounts. However, if you sell a wide variety of products, you will probably want to associate the account with the products for which the account has agreed to be a reference.
1. Create a Custom entity called “Reference Products”
2. Create N:1 relationships between Reference Products and Accounts. Under Navigation Pane Item for Primary Entity on the relationship form, select the “Use Custom Label” display option and enter “Reference Products” as the Custom Label.
3. Create N:1 relationships between Reference Products and Products and name it Product (don’t use “Reference Product,” it is already in use). Under Navigation Pane Item for Primary Entity on the relationship form, select the “Use Custom Label” display option and enter “Reference Accounts” as the Custom Label.
The reason I recommend alternating the names of the relationships and the Primary Entity navigation pane item is because this will allow you to open an Account and easily see what products the account has agreed to be a reference for or open a product record and see which accounts have agreed to be references for that product. It wouldn’t make sense if you saw a navigation bar item on accounts that says reference accounts—changing the display label will make it more logical to users
4. If applicable, add a picklist called “Reference Type.” This will allow you to identify if the Account has agreed to take reference calls, reference visits, or both.
5. Add fields to form and publish changes
You can now identify which accounts have agreed to be references and the products for which they have agreed to be references. Say you wanted to find a list of Accounts that have agreed to be a reference for product XYZ, accept reference visits, and are located in New York . You could do a simple advanced find of Reference Products, selecting where Product = “XYZ,” reference type = “Reference Visit” or “Both,” and related Account Address 1:Stateor province=”NY.”
Scheduling Reference Calls and Visits
Microsoft Dynamics CRM provides several different types of activities that you could use to track your activities, such as appointments and phone calls. One of the best ways to track reference activities is by using Service Activities.
Reference calls and visits have some similar characteristics to service activities.
- They involve multiple resources which must be coordinated and scheduled, just like a service activity. A reference visit to one of your clients may include the salesperson, sales manager, or a sales engineer (maybe all three, if it is high profile).
- They involve multiple companies—the potential customer and the reference company
- Like services, there can be several different types of reference activities—reference site visits and reference calls, for example.
Step 1. Define your reference services in Microsoft CRM
By creating service records for Reference activity types we will provide a standardized way to distinguish between reference calls and reference visit activities, and we can enforce any reference visit policies regarding which resources need to be involved so we can create consistent customer reference experiences.
1. In Microsoft CRM, go to the Services area of the Wunderbar and select Services from the navigation bar
2. Create a new service, giving it the name Reference Visit.
3. On the required resources tab, you can define what resources need to be involved in a reference visit. This is where you can enforce any resource policies, such as if any reference visits require a salesperson to be present, or you could specify that 1 salesperson and 1 sales manager need to be involved to ensure management has awareness of what reference activities are happening.
4. Create additional service records for each additional type of reference activity.
Step 2. Create and Schedule Reference Activities
Now that we have our Reference service records defined, we can create and schedule reference activities. So let’s say I want to create and schedule a reference activity for potential customer Joe’s Ping Pong Balls INC. to visit reference customer ABC Corp
1. Create a new service activity—In CRM, click New Activity and select Service Activity. I like to give the activity a descriptive name, such as “Reference Visit for Joe’s Ping Pong Balls.”
2. Select your reference activity type from the Service lookup.
3. Specify the potential customer in the Customers lookup. The nice thing is that this will allow you to specify multiple potential customers, in case you were hosting a reference visit for multiple potential customers. The reference activity will be reflected in the activity history for every customer specified in this field.
4. Schedule the time for the reference visit—you can do this in one of two ways. If you know the sales resources that should be involved, you can enter them in directly to the Resources field. If you work in a team sales environment, and want to select someone qualified who is available, you can click the Schedule button from the actions menu and click the Find Available Times button to select a resource and time that are available. Any resources who are added will have this reference appointment appear on their Outlook calendar if they are using Microsoft Dynamics CRM for Outlook.
5. Specify the Reference Account (the account that is providing the reference)—On the sales activity form, click the Details tab and specify the Reference Account in the Regarding field. Now the activity will also be reflected in the activity history of the Reference Account.
This illustrates the power of the service appointment—we have created one activity, linked it to multiple accounts and sales resources, coordinated schedules of all of these resources, and had it show up on all of their Outlook calendars—perfect for a reference activity.
If your company does not use service activities for other purposes, there are some additional changes that you could make to have this fit even better. You could move the regarding field to the main Service Activity tab to reduce the need to switch tabs when scheduling, and you could also modify the label of the Regarding field to “Reference Account” to prevent user confusion over the Customer and regarding fields.
Posted by Joel Lindstrom on October 10, 2008 at 06:38 AM in Microsoft CRM Tricks and Tips | Permalink | Comments (0) | TrackBack (0)
BizTalk Adapter for Microsoft Dynamics 4.0 Now Available
Microsoft has released the BizTalk Adapter for CRM 4.0. This adapter allows users of BizTalk to
This is an updated adapter from the previous version, and it now supports 32 and 64 bit CRM installations, multi-tenancy, and forms authentication (IFD).
Thanks to Jim Glass for the heads up.
Posted by Joel Lindstrom on October 10, 2008 at 06:18 AM in Web/Tech | Permalink | Comments (0) | TrackBack (0)
October 07, 2008
Geocoding Addresses in CRM
Every once in a while, you may find yourself with a need to know the latitude and longitude coordinates for an address. The process of looking up these coordinates is called geocoding. There are many good reasons to geocode your addresses, but the big one is you can more readily take advantage of some slick functionality with various mapping applications. This post will demonstrate building a plugin to call a geocoding web service, which will look up the coordinates for the specified address and save them to the latitude and longitude attributes on the address.
This post is quite lengthy, so we'll dive right in after the jump...
Posted by Will Wilson on October 07, 2008 at 08:28 AM | Permalink | Comments (0) | TrackBack (0)
October 02, 2008
ISV.Config: Pass the Current View Id and Type with Javascript
While working on the CRM Notifications Accelerator, I came up with the following bit of code that I used in the ISV.config for a custom menu item that detects the view that is currently displayed in the CRM grid. I knew this functionality was possible - we see the Advanced Find dialog pull this trick all the time.
This bit of code is useful for those situations where you'd like to pass the id of the current view to a custom web page for processing. In my case, I wanted the view id so we could fetch that view's records for output in an RSS feed. The view type is also important, as we need to know whether the view definition is in the savedquery entity, or the userquery entity.
if (top.stage.crmGrid != null)
{
// Grab view id and type code
var sViewId = top.stage.crmGrid.GetParameter('viewid');
var sViewType = top.stage.crmGrid.GetParameter('viewtype');
switch(sViewType)
{
case '1039':
// System View (savedquery entity)
alert('View ' + sViewId + ' is a System View');
break;
case '4230':
// User View (userquery entity)
alert('View ' + sViewId + ' is a User Query.');
break;
}
}
Embed this bit of javascript into your ISV.config menu item. The code is pretty straightforward: the crmGrid object has the GetParameter() method that allows us to look up the current view. If there is no view displayed (like when you are view the Service Calendar, for instance) GetParameter() returns a null value. This dives pretty deep into the CRM Document Object Model (it's not documented - I poured through a fair amount of the CRM web pages and javascript files to find this), so be warned that the above functionality could possibly be rendered useless in a future hotfix or version of CRM.
Posted by Will Wilson on October 02, 2008 at 11:28 PM | Permalink | Comments (0) | TrackBack (0)
Time Zone Issue Workaround - Full (Offline) and Desktop Outlook Clients
In CRM 4.0 the Outlook client will assume the server time zone for both the Outlook CRM Desktop and Full clients. This is true even when the CRM client is off-line. To see the issue, on a workstation with a time zone other than that of the server, in the CRM Outlook client create a Note and you will see the time stamp not to your local time but rather to the server time. To avoid this situation:
1. Exit the Outlook client. If you are running the Outlook client, you will not see the option to change the time zone in CRM.
2. Each user must make the time zone change by opening CRM in IE using http://servername/orgname/loader.aspx.
3. In the web version if CRM, click on the menu option Tools – Options…
4. On the General tab in the middle of the ‘Set Personal Options’ dialog you will see a setting to adjust the time zone.
5. Set the time zone to the local time zone, and then click OK.
***Remember to make this part of your CRM Outlook client install procedure!
Posted by David Frattalone on October 02, 2008 at 05:38 PM | Permalink | Comments (0) | TrackBack (0)




Recent Comments