Tuesday, November 27, 2007

Hide Tabs Script compatible in MSCRM 4.0

One of the things that has been on my mind has been the scripting that has been floating around that modifies DHTML on a CRM form.


One of the more frequent requests that I get and end up in implementing is that of hiding a tab on a form. Below is some code that I have used in MSCRM 3.0 on the Account form to hide the Notes tab from a default set up, but technically, the 4th tab on the form.

Here's the code that I have tested in the beta system I have and my code still worked:

var oType = crmForm.all.address1_addresstypecode;
switch (oType.SelectedText)
{
case "Other":
crmForm.all.tab3Tab.style.visibility = "hidden";
crmForm.all.tab3Tab.style.position = "absolute";
break

default:
crmForm.all.tab3Tab.style.visibility = "visible";
crmForm.all.tab3Tab.style.position = "relative";
break;
}

Now, whenever the option of "Other" is selected from the Address Type field, the Notes tab will disappear.


I'll be testing more scripts to see how much scripting changes I'll be having to make when I upgrade clients to MSCRM 4.0.

David Fronk
Dynamic Methods Inc.

Enabling the Form Assistant from the GUI

In MSCRM 3.0 you do have the ability to remove Form Assistant from a form or set it to being opened or closed when you open a specific form. However, to do that you had to modify the Site Map, not always the easiest thing to modify.

However, in MSCRM 4.0 this is now included in the GUI within the Customizations section. From Customizations, open an entity, open the Form and then click on Form Properities. The first tab you will see will be:



Now changing the Form Assistant is as simple as changing a checkbox and publishing your changes.

Things are just getting easier and easier for Administrators.

David Fronk
Dynamic Methods Inc.

Tuesday, November 13, 2007

Phone Calls and Outlook in CRM 4.0

One of the biggest complaints I hear around activities is that only Appointments, Tasks and Service Activities sync with Outlook Appointment or Tasks. We were always told that since there was no equivilent activity in Outlook, CRM couldn't push the other activities into Outlook.

Well, that's all changed now. The CRM developers finally decided to forget about waiting for Outlook to comply with CRM and decided to just push things into Outlook activities.

Let me state this in big bold letters so that no one misses it:
PHONE CALLS WILL SYNC TO OUTLOOK TASKS IN CRM 4.0.

Everybody got that? I know that I have a number of clients who I talked into using a highly customized Task to accomodate Tasks and Phone Calls so that users would get reminder pop-ups from Outlook about when they needed to make a phone call. This new feature now removes that need and just makes so much more sense. Simple and yet it will make a huge difference to end users (who use activities).

Great things coming in the new version!

David Fronk
Dynamic Methods Inc.

Thursday, November 08, 2007

Duplicate Detection

Here it is, probably the number 1 most requested enhancement from customers to Microsoft: Duplicate Detection.

I have seen some posts that show how the duplicate detection works from an end user point of view and some that have described at high level what it does. My hope is to step you through setting up a duplicate detection rule and showing off the capabilities that Microsoft has put into this.


First off, there is now a new section under Settings called "Data Management." This section allows you to access:


1. Duplicate Detection Settings
a. Specifies when duplicate detection should occur
2. Duplicate Detection Rules
a. Management of the actual rules that check for duplicates in the system
3. Bulk Record Deletion
a. Keep track of large deletions from the system
4. Data Maps
a. Create and Manage Data Maps for Imports

The Duplicate Detection Settings looks like this:

This is great because you can choose whether or not you want to do duplicate checks only on a scheduled basis (to improve user performance), when users create or save records, when users come online, and/or during imports.

Once you have that set, the next step is to actually set up the rule for which you check for duplicates. When you create a new duplicate detection rule you will see the following window (without everything being filled in):

A few things to note here:
1. You can check for duplicates on the same entity OR different entities. So, if you have a fear of somone importing a bunch of names into leads that could exist in contacts or accounts, the system can be set up to check that for you.
2. You have the choice of making the rule "Case-sensitive" or not:
3. Notice that the criteria area is set up in a very similar fashion to Advanced Find. Allowing you to have as many rules as you want (to a limit of a matchcode length of 1000...I'll talk about that more later).

As you build out your criteria lines you have the options to check for:

1. Exact Match
2. Same First Characters
3. Same Last Characters

Below is a set of criteria that I set up to check against the email addresses checking for the first 10 characters on EmailAddress2 and the last 20 characters on EmailAddress3.



Note that there is a "Matchcode Length" maximum of 1000. What this means is that you can check up to 1000 characters, or data items in your duplicate check criteria. Let me give you some examples.

1. Nvarchar (textbox) with a maximum value of 100 are worth a matchcode length of 100. Meaning you could only check up to 10 textboxes that had a maximum length of 100. Even if the entire field is not used on a record it will still count as the maximum number allowed in the textbox.
2. Boolean (bit) take up 2 matchcode length values. 1 for true and 1 for false.
3. Picklist (dropdown) take up 255 matchcode length values.

From this you can see that you will have to mix and match a bit to get your rule just right but still make it under the 1000 matchcode limit. I'm sure it won't be a problem for most people but there will always be those who will hit this limit every time they create a duplicate detection rule.

The main reason that Microsoft has limited the amount of things you can check against is to make the rules manageable. The more complex the check the longer the check will take to run. Thus slowing down the user experience and making your scheduled checks take much longer.

Also, keep in mind that if you make multiple rules on the same entity you will be causing slowness to the system as well. I believe I was told that 4 or 5 rules per entity should be just fine but after that you will start to see a dip in performance. So, just be aware of that. I haven't tested this on a production server yet so I can't say one way or the other.

Once you have your rule set up you then publish the rule and it is applied to whatever your Duplicate Detection Settings are set to.

If you want to see a click through, Phillip Richardson has put up a screencast to show you what the actual check looks like. Here's the link: http://www.philiprichardson.org/blog/post/Titan-Duplicate-Detection.aspx

Great things coming. I'm real excited for CRM 4.0

David Fronk
Dynamic Methods Inc.

Friday, November 02, 2007

MS Readiness CRM 4.0

I just attended the local MSCRM 4.0 Readiness event and got a great overview of a lot of information about MSCRM 4.0.

Here are some of the highlights that I don't think you may have seen.

1. Tracked Emails will not require the Tracking Token. You can use if you want but you now have the option.
2. Through the use of Windows Communications Server you can link IM to CRM. We were told that internal IM would definitely be available but being able to IM your Contacts (using their email addresses) may not be possible. The rep's weren't 100% sure.
3. Reporting will now work while not on the domain and you can do reporting while offline using the Outlook client.
4. Pages have been reduced in size by 66% to make loads and requests faster. Also, the queries to Active Directory (AD) have been significantly reduced. MS actually admitted (finally) that they were causing a lot of chatter between CRM and AD, something they wouldn't do before CRM 4.0 was being released.
5. Security Roles are now exportable. This is great for consultants who have to recreate the same role over and over again from one client to another (it's a lot of clicking). There are actually a lot more exportable items now. Workflow for instance is exportable, which was possible in 3.0 but not from the web or Outlook interfaces. So, that has changed as well.
6. Subjects can now be linked to any entity.
7. Metadata is no longer just read-only. You can write to it and delete from it now programmatically. Great news for all the hardcore developers out there.
8. Supported Configurations
a. Anything that ends in "2000" or earlier is no longer supported (Office, Server, SQL, etc)
b. XP and Vista
c. Internet explorer 6/7
d. Office 2003 and 2007
e. Visual Studio with .NET Framework 3.0
f. Visual Studio 2005 Visual Studio 2008
g. SQL 2005 and SQL Katmai (SQL 2008)
h. Exchange 2003 and 2007
9. Improvements have been made to have CRM Server Roles to farm out functions for the CRM Server. Web App, Platform, SQL Mirroring and/or Farming, etc. Also, a lot of actions, including workflows and custom code will run asynchronously instead of synchronously. By doing this, the user experience should be faster because nearly everything gets pushed to the server to be run in the background.
10. If you have the Outlook client installed and you send an email from CRM it will appear in your Sent Items folder of Outlook. If you don't have the Outlook client installed and you send an email from CRM then it will not be placed in your Outlook Sent Items.
11. A lot of objects have been added to the CRM database, like Workflows or Security Roles, so that they are their own entity and can have reports built off of them, better security, and more flexibility. Workflow will now be much easier to manage and report on with this change. Workflow Monitor was functional but was really lacking. I don't know of any out of the box reports that are coming for Workflow, so you may have to build your own but still, that's better than what we had before.

That about does it in terms of things that were discussed that I haven't seen posted already on other blogs. Hope this helps you in seeing the growth of MSCRM and it's potential for you and your company.

David Fronk
Dynamic Methods Inc.

Typing in a LOOKUP Field 2 (additional functionality)

So, I just attended the local MSCRM 4.0 Readiness event and I actually got a lot of good info out of it. We got an idea on pricing (though it is subject to change), walked through new features, architecture, install, upgrade, etc.

One of the things that I actually posted on (Typing in a LOOKUP Field) and I had to show you what I found out. In the post I show how you can type in the lookup field and it will automatically find the record with the name that you type, assuming that the record exists, is not duplicated in the database, and you spell it right. What I found out though, is if you type part of the name and your text goes red (meaning either nothing was found or duplicates were found) you can then click on the icon next to the name and it will show you suggested records for what you typed.



Here's a picture of what I mean:





I only typed the letter "d" and when I clicked on the ! icon it shows me all the possible records that could match what I'm looking for. Also note that it is searching in both Contacts and Accounts.

A really nice feature that I didn't know about until yesterday that I thought you all might like to see.

David Fronk
Dynamic Methods Inc.