Recent twitter entries...

  •  

Using and Installing Mobile Express for Microsoft Dynamics 4.0

Posted by AnonymousDeveloper | Posted in CRM Configuring, CRM General, CRM General Resources | Posted on 15-07-2009

0

Before you start, you should have a complete installation of CRM4.0 on a server. In this demonstration, the server is running Server 2003 and SQL 2005. An existing installation of CRM is being used as the test environment.

Introduction

Mobile Express for Microsoft Dynamics CRM 4.0 has finally been released by Microsoft. The intention is to provide a mobile solution for accessing a company CRM from any device regardless of platform. Mobile Express doesn’t just work on Microsoft platforms, but also Apple ones. All you need is a browser and the component to be installed on the server. However, during this investigation of the component, it has become apparent that there are a few more steps in between. In theory, installation of the mobile client should be relatively quick, but there are several configuration considerations.

1) The installation of CRM needs to be IFD (internet facing) which can be a difficult process to achieve especially when you consider that IFD requires the use of SSL and HTTPS to make it entirely secure.

2) The installation of the component automatically installs Update Rollup 5 on the server which cannot be avoided or reversed. Up until now, customers have been advised not to install Rollups unless they address a specific issue that the customer is experiencing. Unfortunately, Microsoft have given no choice in the matter and Update Rollup 5 is a pre-requisit of the installation procedure.

3) I have found no way of removing the component from a server. The component does not appear in the Add/Remove programs or anywhere else. So, this is a one way procedure. Once Mobile Express has been installed on the server, it cannot be reversed. The only option I have found so far is to physically hide the link to the configuration pages in SiteMap. Whilst this doesn’t remove the component, it does at least remove it from view.

With all that in mind, I have been asked to investigate the viability of the Mobile Express component with a view to offering it commercially to customers in the near future. Here is a step by step tutorial on how to install it.

Step By Step

For the purposes of demonstration, I am installing this in a VPC image. The VPC is a standard installation of CRM4 with configuration options that will common to most installations. In other words, I have tried to make the VPC as ‘vanilla’ as possible to avoid conflicts.

1) Download the component from the following URL (http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=f592ec6c-f412-4fd5-9a80-cd3bcbd26d8b#tm)

2) Move the 13mb file you have just downloaded onto the VPC image. It doesn’t matter where you put this, the desktop is fine.

3) Double click the file and run the installation process. Once it has been completed, you will be asked to reboot the server so advanced warning for the customer might be useful.

Walk through the wizard and reboot the server

image

image

image

5) Now the component has been installed, you can customise it. By default, only those fields that are ‘required’ by CRM will be shown in the Mobile Express Client, but generally, you would require many more fields to be shown. Navigate to the ‘Customise Mobile Express’ screen under the ‘Customisation’ menu in CRM.

image

6) Choose which entities will be visible to users of the Mobile Express client

image

7) Double click on each entity to view the attributes that will be available to users of the Mobile Express client

image

8) Notice that only ‘Business Required’ attributes are shown. Add as many more as you like

image

9) Publish the newly defined selected entities from the main screen

image

That’s it. You have successfully configured the Mobile Express Client . However, the users wont be able to access the server to view this information without a few additional set up steps. We need to make the installation IFD or Internet Facing. This procedure usually involves the setting up of SSL and server certificates, as well as the configuration of the CRM, but for the purposes of this demonstration, I am going to access the server via WiFi on my mobile device from within the network.

IFD Deployment

Usually, the company who is setting up the CRM knows in advance that the installation needs to be IFD, but sometimes, you need to do this after the fact. In order to manage this, you can download the IFDTool from here (http://support.microsoft.com/kb/948779)

1) Download the zip file from the link above

2) Copy the zip to the VPC (or the server that is r unning CRM)

3) Extract the contents of the zip file to the following destination : drive:\Program Files\Microsoft Dynamics CRM\Tools

image

4) Double click the CRM4IFDTool.exe

5) Make the ‘Authentication Strategy’ box display IFD+OnPremise

ref="http://wookiecrm.typepad.com/.a/6a00e5522eea818834011571137464970c-pi">image

6) Complete the IFD Internal Network Address and Subnet Mask boxes

image

7) Click the ‘Add Button’

image

8) Complete the AD and IFD Domain Scheme values

image

9) Apply changes

image

10) Finally, ensure that the users who have access to the mobile client have the appropriate ‘Go Mobile’ security privilege.

image

Accessing the Mobile Express client from your phone

Once the IFD deployment has been completed, you will be able to use your usual internet client on your phone to access the CRM.

1) Open up your browser and enter a URL similar to the one below

http://192.168.100.50:5555/<YourOrganisationName>/m

Note that the above URL uses the IP address of your CRM server and the Organisation Name of the installation, not the Friendly name. For the curious, you can find some of the installation files for this component under the directory called ‘m’ in the CRMWeb site.

2) If you IFD installation is correct, you will be presented with a login screen, complete the details as you would normally

image

3) If your login was successful, you will see a list of available entities

image

I have tried this on various browsers and so far I have established that only Safari and IE seem to be sophisticated enough to handle this application. My Iphone has a lightweight browser that I use often and this just isn’t good enough. Another obvious point to note is that if you have any Javascript customisations, these will not be executed by the Mobile Express client.

This can present something of a problem if you have a heavily customised installation where data integrity is governed by Javascript in the OnLoad and OnSave events. Unfortunately, the mobile client doesn’t seem to understand the concept of read-only fields so any field that is read-only in full client, will be open to edits on the mobile client. This could cause issues with data integrity.

Another major draw back of the mobile client is the lack of support for Lookup fields. Most entities have related entity fields and unless you know the exact value that should go into this field, the Mobile Express client will throw an error if you enter a value that it cannot resolve.

image

The good news is that plugins are executed as normal. In this installation, I have a plugin that assigns the value of a particular field on Create of the Opportunity. The field that is usually read-only and is populated by the plugin is of course, open for editing in the mobile client, but even though I enter some rubbish that could cause a breach of data integrity, the plugin fires when the Opportunity is posted to the server and the spurious value is overridden.

Further things to note should be :

1) Not all entities are available to the Mobile Express client. Although you can add all the entities in the list, only the ones in Bold Black font will actually be viewable on your phone. So, competitors, Addresses, Contract Lines, Discounts, Campaign Activities etc are not available.

2) Likewise, not all related entities are available even to the entities that are included. So, Competitors from Opportunities are not shown. In fact, even though I have added all available entities to the installation, only those shown below are actually available to an Opportunity.

image

3) You can write notes, they are actually available to the entity as long as you include the Note entity.

image

4) Views are also available but unfortunately, you only get the first two columns. In the Iphone this is handled slightly better by the interface as you get a jog wheel to choose the drop down

image

image

5) Picklists are also handled in a similar fa
shion

image

6) You can also view user information but not edit it

image

Conclusion

After spending a couple of hours with the Mobile Express client, I have to conclude that it is very limited in it’s application. Although the ability to add records to each entity is available, it would be highly inadvisable if data integrity is of any interest to the customer. The opportunity for corrupting or entering spurious information is just too great. The only way to limit access is by using the native security roles of the user, but this presents it’s own problems. You do not have a choice of levels of access based on client, so it is not possible to restrict access from Mobile Express whilst allowing access from OnPremise. The only way to achieve this is to have two security roles for each person or a system where ‘outdoor sales people’ download the accumulated information from the day and people with appropriate security roles upload the information. Both options cause more cost than would be necessary if Microsoft were to add another level of security which identified the client as well as the user.

If we exclude the ability to add new records to the database for reasons of data integrity, then we are left with only the ability to view existing information. While this is undoubtedly useful, there are other more efficient ways to accomplish most of what is required in most cases. For instance, contact information, addresses, phone numbers are far more efficiently handled by Outlook and if the mobile client is synced with Exchange and using Push, then all this information is already to hand for the user rather than having to access it using the mobile client. In a real world situation, it is most likely that the mobile client would be used by Outdoor sales people so the lack of a Google maps integration is disappointing to say the least.

Unfortunately, there is another major limitation. As many users would perhaps be engineers etc, the inability to review service activities is an issue. The user can read them, but not write to them, presumably because of the multiple lookups and complexity of the scheduling engine. Inexplicably, Competitors are omitted from the list of available entities as are additional addresses. Likewise, History views are not available along with accompanying activities so there is no way to see what has been done on a case for instance. Most scarily of all, it is entirely possible to delete accounts from the CRM using the mobile client! The lack of customisation for the grid is terrible. I know that phone screens are very narrow, but the ability to scroll left or right is an absolute must. By limiting the user to only the first 2 columns in the grid, a whole plethora of problems could arise if the data is not rigourously controlled and there are multiple entries with the same information in those two columns.

I hope you’ve enjoyed this walk through.

Stack Overflow Error at Line 165 : Advanced Find and Custom Views

Posted by AnonymousDeveloper | Posted in CRM Configuring, Gosh, that's useful | Posted on 11-06-2009

0

Recently, I received an interesting problem from a customer. My customer told me that whenever he creates a new custom view for an entity and uses the AND/OR group clause, he receives a stack overflow error. For a few horrified minutes, I thought this might have to do with the SQL server but after some mooching around, I managed to find an appropriate Microsoft Knowledgebase Article describing the problem. Further testing confirmed that the error (shown below) was also present in the Advanced Find which is not terribly suprising since considering that the Advanced Find is utilised by the View engine.

image

Error :

Microsoft Dynamics CRM Error Report Contents

<CrmScriptErrorReport>
<ReportVersion>1.0</ReportVersion>
<ScriptErrorDetails>
<Message>Out of stack space</Message>
<Line>165</Line>
<URL>/RuleFinancial&#47;AdvancedFind&#47;AdvFind.aspx</URL>
<PageURL>/RuleFinancial&#47;AdvancedFind&#47;AdvFind.aspx</PageURL>
<Function>&#41;</Function>
<CallStack>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
<Function>&#41;</Function>
</CallStack>
</ScriptErrorDetails>
<ClientInformation>
<BrowserUserAgent>Mozilla&#47;4.0 &#40;compatible&#59; MSIE 7.0&#59; Windows NT 5.2&#59; .NET CLR 1.1.4322&#59; .NET CLR 2.0.50727&#59; .NET CLR 3.0.04506.30&#41;</BrowserUserAgent>
<BrowserLanguage>en-us</BrowserLanguage>
<SystemLanguage>en-gb</SystemLanguage>
<UserLanguage>en-gb</UserLanguage>
<ScreenResolution>1280x800</ScreenResolution>
<ClientName>Web</ClientName>
</ClientInformation>
<ServerInformation>
<OrgLanguage>1033</OrgLanguage>
<OrgCulture>2057</OrgCulture>
<UserLanguage>1033</UserLanguage>
<UserCulture>2057</UserCulture>
<OrgID>&#123;A0476863-44E0-440B-98C5-9041A4B40DE8&#125;</OrgID>
<UserID>&#123;B742828E-60F7-DD11-BA51-001E0BDBDAD8&#125;</UserID>
<CRMVersion>4.0.7333.3</CRMVersion>
</ServerInformation>
</CrmScriptErrorReport>

 I downloaded the HotFix from the KB Article (You receive an error message or you cannot select the lookup value in the Advanced Find page in Microsoft Dynamics CRM 4.0 ) and applied it to the server.

You can also request the Hotfix from HERE if it has been removed from the KB article in favour of Rollup 4

Warning : This file is 256mb!

Result : No Stack Overflow problems any longer. This fix is also included in Update Rollup 4 for those who are interested, but I have never advised applying a whole Rollup when a single Hotfix will do.

Customisation of an ISV button : Toggles, Colours and other Fun

Posted by AnonymousDeveloper | Posted in CRM Configuring, Javascript Snippets | Posted on 02-06-2009

0

Further to previous posts HERE on how to hide ISV buttons, I recently came across a new wrinkle in the problem, essentially, I needed to be able to access the properties of that ISV button in order to create a toggle button. Knowing as we do that CRM4 adds some random number to the definition of a button, I really needed to find a way around this.

 

The Problem

If you create a new ISV button for yourself (on accounts in this case), and you use the Developer Toolbar to access the information about it, you will notice the following :

image

 

This number ‘increments’ every time the page is loaded so it you dont have a static name any longer. This presents something of a problem when it comes to creating a toggle button and changing the styles. So, how can we do something about it?

The first question is….what doesnt change? Well, the tooltip definition doesn’t change for a start. When you create the ISV button in ISV.config, you add your tooltip variable right into the XML, like so.

image

The Solution

As well as the ToolTip variable, we also know that the menu bar is always designated as mnuBar1. We can iterate through a collection to find our particular button.

function OnCrmPageLoad()
{
  //Configure Display when the form loads.
  ConfigureToolbarDisplay();
  //Configure the display each time a user manually changes the window width size.
  attachEvent("onresize",ConfigureToolbarDisplay);
}

function ConfigureToolbarDisplay()
{

    //Toolbar buttons that are to be affected - referenced by the ToolTip value
   //assigned in the ISV.config
   ShowHideToolbarButton( "ISV Button" );
}

function ShowHideToolbarButton( btnTitle )
{

    //Get all toolbar buttons
    var toolBarButtons = document.all.mnuBar1.rows[0].cells[0].childNodes[0].childNodes;

    for (var i = 0 ; i < toolBarButtons.length ; i++)
    {


        var button = toolBarButtons[i];

	//Loop through the collection and find the btnTitle we are interested in
        if( button.title.match(btnTitle) != null )
        {

	//Assign our button to the ButtonID variable
	var ButtonID = button.id;


         }
    }

}

OnCrmPageLoad();

 

Lovely, we have a basic structure for defining our custom ISV button.

Now, lets have some fun.

I want my button font colour to be RED

Now we have the definition for our ISV button, we can do almost anything else we want with it despite CRM shenanigans with spurious numbers. However, there is one more fundamental problem and that is ‘how’ CRM creates the pages at run time. If you were to use the following code under the ‘var ButtonID….’ line, you would be able to change the text as expected, but your icon would disappear.

document.all[ButtonID].children[0].innerHTML = "Do Something";

image

Not really very helpful. You can also change the colour quite happily by using the following additional line :

document.all[ButtonID].children[0].style.color = "red";

 

image

Lets take a look at the developer toolbar and see what code is actually being generated when a normal ISV button is displayed.

image

As you can see, there is a SPAN class, then an A class, then the IMG and another SPAN which actually holds the text property which we want to influence.

By looking at the code generated when we use the lines above, we see the following :

image

Where did our IMG class go? Good question, and the short answer is, I dont know. However, it still leaves us with the problem of how to overcome this little limitation and the answer is to cheat. We know that the text is contained in the SPAN element, but we also want the IMG element to display. Luckily, there is an element called innerHTML which will do very well for our purposes. So, we create a new function called, ModifyButton with some additional parameters.

 

function ModifyButton (btnName, btnTitle, btnIcon){

try
	 {
	 //find the button we have specified
	 var navigationBar = document.getElementById(btnName);

	 //find the correct element of the menubar/button we have specified
	 var textArray = navigationBar.getElementsByTagName("SPAN");

	 //read our variables
	 var buttonIcon = "http://crm:5555/_imgs/" + btnIcon; //change this reference
	 var buttonText = btnTitle;

	 for (i = 0; i < textArray.length; i++) {

            textArray[i].innerText = buttonText;

	   textArray[i].innerHTML = "<A class=ms-crm-Menu-Label><IMG class=ms-crm-Menu-ButtonFirst src='" + buttonIcon + "'><SPAN class=ms-crm-MenuItem-TextRTL>" + textArray[i].innerText + "</A></></SPAN>";

          }
	}

 catch(ex){
 }
}

This function can be invoked from within the original ShowHideToolBarButton function like so

function FindToolBarButton( btnTitle )
{

    //Get all toolbar buttons
    var toolBarButtons = document.all.mnuBar1.rows[0].cells[0].childNodes[0].childNodes;

    for (var i = 0 ; i < toolBarButtons.length ; i++)
    {


        var button = toolBarButtons[i];

	//Loop through the collection and find the btnTitle we are interested in
        if( button.title.match(btnTitle) != null )
        {

	//Assign our button to the ButtonID variable
	var ButtonID = button.id;



        }

    }



   //Invoke ModifyButton function....
  ModifyButton(ButtonID,"My New Button","ico_16_4200.gif");



}

 

So, what do we get when we put all of this together?

image

My New Button now has the text that we specified above as well as the IMG tag containing the correct icon, but it still isnt red. Well, that is now fairly easy to handle. Just add the following line just above the ‘innerHTML’ element within the ModifyButton function.

textArray[i].style.color = "red";

image

In fact, you can now add any DOM style you want to your new button

textArray[i].style.backgroundColor = "Navy";

 

image

Practical Applications

Now that we know we can influence the title of the ISV button and it’s style, it’s really a question of how to use this. The original premise that took me off down this path was that I required a toggle button. I wanted to be able to change the caption of an ISV button and it’s function based on the value in another attribute on the form. This lends itself very nicely to setting account flags, changing addresses, updating records etc. Coupled with the power of SQL stored procedures, you could update the database directly although this is highly unsupported.

How to hide buttons on CRM Forms

Posted by AnonymousDeveloper | Posted in CRM Configuring, CRM Development, Javascript Snippets | Posted on 27-02-2009

0

One of the most common operations we do is to hide certain buttons within the CRM using DHTML. This ought to have been relatively easy and using CRM3 it was. You simply used the following :

document.getElementById('[yourcontrolnamehere]').style.display = "none";
 

Unfortunately, things have changed in CRM 4 and not for the better. In CRM 4.0 there is some auto-incremented number or randomly generated number that gets placed at the end of all of the ElementId’s on a page. Which means that the code used for CRM 3.0 will break.

Recently, due to some operational reasons, my client wanted to disable the ‘Convert Campaign Response’ button on the Campaign Response Form.

ConvertCampaignResponseButton

So, there are a number of ways this can be achieved. First of all, we need to know the actual name of the control we are about to hide. I find that the IE Developer ToolBar is one of the very best methods of achieving this. You can download the tool bar from HERE . When you have downloaded and installed the toolbar, you will be able to use it to find the actual name of the control inside CRM.

1) Navigate to the form you wish to check

2) Press F11 and then the Toolbar Icon

Devtoolbar

ClickFind 

3) Click ‘Find’ and then ‘Select Element By Click’

4) Select the button that you want to hide.

ConvertCampaignName

This handy little tool gives you the names of all elements on the page and now, all you have to do is hide them. There are a number of solutions out there.

Solution Number One

var Hide = function(menuItem){
if (document.getElementById(menuItem) != null)
{
document.getElementById(menuItem).style.display = "none";
}
}
 
var RemoveSpacerAfter = function(menuItem){
if (document.getElementById(menuItem) != null)
{
var item = document.getElementById(menuItem);
if (item.nextSibling != null)
item.nextSibling.style.display="none";
}
}
 
Hide('_MBConvertResponse');
RemoveSpacerAfter('_MBConvertResponse');

 

Solution Number Two

//Get all of the List Elements
var lis = document.getElementsByTagName('LI');
 
var i = 0;
//Loop through the list items
while (i < lis.length) {
//Don't worry about any list item that doesn't have the title you are looking for.
if (lis[i].getAttribute('title') == 'View directions to this account.')
{
//Replace the DHTML with blank tags to hide the button
lis[i].outerHTML='<SPAN></SPAN>'
}
i = i + 1;
}

You can also delete menu options from the Actions menu on any entity. Here’s the same code again but removing the ‘Delete  Case’ menu item from the Actions Menu

//Get all of the List Elements
var lis = document.getElementsByTagName('LI'); 
var i = 0;
//Loop through the list items
while (i < lis.length) 
{ 
//Don't worry about any list item that doesn't have the title you are looking for.
if (lis[i].getAttribute('id') == '_MIonActionMenuClickdelete112')
{ 
//Replace the DHTML with blank tags to hide the button
lis[i].outerHTML='<SPAN></SPAN>'
}
i = i + 1;
}

 

 Item Names

Item names are also fairly easy to figure out. You can view them by opening the relevant form, pressing Ctrl-N and then ‘View’, Source. Here are some basic ones that are much the same for all entities.

Actions Menu

Add Activity = _MIlocAddActTo4401

Add a Note = _MIlocAddObjTo5

Attach a file = _MIlocAddFileTo5

Delete Account = _MIonActionMenuClickdelete1 (Entity: Contact would be 2)

Mail Merge = _MIonActionMenuClickwebmailmerge1 (Entity:Contact would be 2)

Sharing = _MIonActionMenuClickshare1

 

General Buttons

Jewel Button = ms-crm-Menu-JewelButton

Save = _MBcrmFormSave

Save & Close = _MBcrmFormSaveAndClose

Print = _MBcrmFormPrint

 

A word of explanation for the Delete menu item. The number at the end of the id is in fact the ObjectTypeCode for the entity. So, the name of the delete button for the Accounts entity has the number 1 appended, contacts has the number 2 and so on. Once you have the hang of the naming conventions, it is pretty easy to guess what any given button or menu item is likely to be called. Once you have this information, you can view the source, search for the value and then confirm the correct information prior to applying the javascript.

“The path is not of a legal form” while installing the Dynamics CRM Outlook client

Posted by AnonymousDeveloper | Posted in CRM Configuring, CRM Implementation, CRM Installing | Posted on 20-02-2009

0

I was installing the Data Migration Wizard on a Client Server. After selecting the install directory, I received an error message saying “The path is not of a legal form”.

This path is not of a legal form

This path is not of a legal form

However, the specified folder was “C:\Program Files\<an install directory>” and it was present on the C drive. After a few searches on the Web, I found someone having a similar issue while installing the CRM Data Migration Manager.Their solution was to update manually the registry.

Key: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
Installer\UserData\S-1-5-18\Products59DD8CB00184F24E99A62CF4D6109FA\InstallProperties]

Name: InstallLocation
Set the Data value to “C:\Program Files\Microsoft Dynamics CRM”

path-is-not-of-a-legal-form-registry

After this modification, setup continued without an error (this was empty on my installation).

Installation and Configuration Problems with Outlook Client

Posted by AnonymousDeveloper | Posted in CRM Configuring, CRM General, CRM General Resources, CRM Installing | Posted on 08-12-2008

0

Here is the first of four planned articles on the Outlook Client and Email in general within CRM. I have focused on known issues as well as the odd few that I have personally come across. This article is a compilation of various sources of information as well as personal experience. Many thanks to those who contributed if only passively.

Obligatory Disclaimer

To the best of my knowledge this information is correct, but the author takes no responsibility if you follow any of this advice and subsequently, your installation fails to work. Proceed at your own risk

Overview

Microsoft Dynamics CRM for Microsoft Office Outlook enables access to the same data through Outlook as the Microsoft Dynamics CRM Web client. Microsoft Dynamics CRM for Outlook is targeted at Microsoft Dynamics CRM users who need access to CRM data while using the familiar Outlook application. There are two user interfaces:

· Microsoft Dynamics CRM for Outlook. Install this on workstations (including computers shared by several users) that have a permanent connection to the local area network (LAN) or the Internet, but that are not used for travel. If a computer is being shared by several users (that is, each user has a separate log on account and is a valid Microsoft Dynamics CRM user), Microsoft Dynamics CRM for Outlook must be configured, by running Microsoft Dynamics CRM for Outlook Setup, for each user.

· Microsoft Dynamics CRM for Outlook with Offline Access. Install this on computers for users who travel, or are not always connected to the LAN. With Microsoft Dynamics CRM for Outlook with Offline Access, those users who require offline support, while they work in the field, will have access to their customer data.

Microsoft Dynamics CRM for Outlook can be used to perform the following tasks:

· Deliver received e-mail messages to Microsoft Dynamics CRM.

· Send e-mail messages generated from Microsoft Dynamics CRM.

Microsoft Dynamics CRM for Outlook no longer requires E-mail Router to process Microsoft Dynamics CRM e-mail messages.

Important If Microsoft Dynamics CRM for Outlook with Offline Access is installed on a computer, Microsoft Dynamics CRM for Outlook cannot also be installed and used on the same computer.

Installation

There are three steps that you must complete before you can run Microsoft Dynamics CRM for Outlook. The steps are as follows:

1. Install Microsoft Dynamics CRM for Outlook. To complete this step, run SetupClient.exe in the Client folder on the installation media.

2. Configure Microsoft Dynamics CRM for Outlook. To complete this, run the Configuration Wizard.

3. Configure User E-mail Settings. To complete this step, you configure the incoming and outgoing options on the User form in the Microsoft Dynamics CRM Web application. By default, Microsoft Dynamics CRM for Outlook is selected for both incoming and outgoing e-mail messages. In addition, you should verify the tracking options. By default, only e-mail messages in response to a Microsoft Dynamics CRM generated e-mail message are tracked.

Use the following procedures in this section to install Microsoft Dynamics CRM for Outlook.

1. Meet all Microsoft Dynamics CRM for Outlook requirements in the System Requirements chapter of the Installation Guide and make sure all Microsoft Office security hot fixes are installed.

2. Log on to the computer as a user who has Local Administrator privileges.

3. Double-click SetupClient.exe, which is located with the installation files in the following folder:

<Drive:>\Client\

4. Either click Install Microsoft Dynamics CRM for Outlook (Recommended) or click Install Microsoft Dynamics CRM for Outlook with Offline Access (Advanced).

5. On the License Agreement page, review the information and, if you accept the license agreement, select I accept this license agreement, and then click I Accept.

6. If Setup detects that components are missing, the Install Required Components page appears.

If you have already installed the required components listed, this page will not appear.

If you have not installed the required components listed, you can install them now. Click Install. When the components are installed, the status column will change from Missing to Installed, and you can click Next to continue.

7. The Select Installation Location page appears only when you install Microsoft Dynamics CRM for Outlook with Offline Access. On this page, select the file installation location. Click Next.

8. The System Requirements page appears. This page is a summary of all system requirements for a successful Microsoft Dynamics CRM for Outlook installation. Failed checks must be corrected before installation can continue to the next step. If there is a problem that will take time to correct, cancel Setup at this point, fix the problem, and restart Setup. When all checks are successful and you are ready to install, click Install.

9. On the Microsoft Dynamics CRM for Outlook Setup Completion page, click Close.

10. Run the Configuration Wizard.

After you complete Microsoft Dynamics CRM for Outlook Setup, run the Configuration Wizard to complete the installation. The Configuration Wizard configures client settings, such as the location of the Microsoft Dynamics CRM server. To start the Configuration Wizard, click Start, point to All Programs, point to Microsoft Dynamics CRM, and then click Configuration Wizard.

Follow these steps to configure Microsoft Dynamics CRM for Outlook.

1. On the Welcome page, click Next.

2. On the Select where you want to sign in to Microsoft Dynamics CRM page, select one of the following options, and then click Next.

· My company. Select this option if you will connect to a Microsoft Dynamics CRM server at your company by using the Internet.

· An online service provider. Select this option if you will connect to Microsoft only through the Internet.

3. On the Specify the Web addresses to use to connect to the Microsoft Dynamics CRM server page, type the URL for the server in the Intranet address box. In addition, if you connect to your company or partner-hosted site over the Internet, you can clear Use the same Web address when the system connects over the Internet and type the URL in the External Web address box. You must do this if you use a different URL to connect to your Microsoft Dynamics CRM server through the Internet. Click Next.

Important If you have server roles installed on separate computers, you must specify the Web address of the computer where the Discovery Service server role is installed.

4. On the Select Organization page, select the organization that you want to connect to in the list, and then click Next.

5. On the Help Us Improve the Customer Experience page, select whether you want to participate in the Customer Experience Improvement Program, and then click Next.

6. The System Requirements page appears. This is a summary of all system requirements for a successful Microsoft Dynamics CRM for Outlook installation. Failed checks must be corrected before configuration can continue. If a problem will take time to correct, cancel the Configuration Wizard at this point, fix the problem and restart the Configuration Wizard. All errors must be resolved. If no errors occur, or if only warnings appear, you can continue with the configuration. To do this, click Next.

7. On the Configuration Complete page, click Finish. If there was a problem that occurred during the installation, click View the log file to review the log file for information about the configuration.

User and Queue E-Mail Configuration

The
e-mail messaging incoming and outgoing options can be set differently for each user or queue. These incoming and outgoing options are configured on the User form. To open a user form, in the Navigation Pane, click Settings. Under Settings, click Administration. Then, in the Administration area click Users, and then double-click the user that you want.

Note By default, Microsoft Dynamics CRM sets both the incoming e-mail server type and the outgoing e-mail server type to Microsoft Dynamics CRM for Outlook. For more information about these types, see the following section.

The incoming e-mail configurations that can be used when a user or a queue receives Microsoft Dynamics CRM e-mail messages are as follows:

· None. Use this option for users or queues that do not use Microsoft Dynamics CRM to send e-mail messages.

· Microsoft Dynamics CRM for Outlook. This option requires that Outlook be installed on the user’s computer. This option does not require the E-mail Router component. However, to process Microsoft Dynamics CRM e-mail messages, Outlook must be running. .

· Forward Mailbox. To use this option, you must install the E-mail Router. This option requires a “sink” mailbox, which must be created by the administrator. The E-mail Router processes e-mail messages that are forwarded to this mailbox. Although this option does not require users to run Outlook, it does require that a server-side rule be deployed for the user. If you are using Exchange Server to process incoming e-mail messages, you can deploy the rule by using the Rule Deployment Wizard.

· E-mail Router. This option delivers Microsoft Dynamics CRM e-mail messages directly to Microsoft Dynamics CRM, without the need of a forward mailbox. The e-mail system that is used to process messages can be Microsoft Exchange Server 2003, Exchange Server 2007, or a POP3-compliant server.

Note that incoming and outgoing options are essentially the same but the Forward mailbox is not available for the outgoing mail configuration.

Troubleshooting Installation and Upgrade

This section describes how to troubleshoot installation and known issues.

Setup creates log files that can be reviewed and used for troubleshooting. By default, the location of the log files, where User is the account of the user who ran Setup, is as follows:

· Windows XP: <systemdrive>:\Documents and Settings\<User>\Application Data\Microsoft\MSCRM\Logs\

· Windows Vista: <systemdrive>:\Users\<User>\AppData\Roaming\Microsoft\MSCRM\Logs\



Known Issues

Error message when you try to install, upgrade or configure a Microsoft Dynamics CRM client for Outlook computer (KB948312)

When you try to install or upgrade a Microsoft Dynamics CRM client for Microsoft Office Outlook computer, you receive the following error message:

Action Microsoft.Crm.Config.Client.InstallAbpAction failed.
Access is denied. (Exception from HRESULT: 0×80070005 (E_ACCESSDENIED))

This problem may occur if the Microsoft Dynamics CRM data file was not completely removed, and if the Microsoft Dynamics CRM address book provider (ABP) contacts were not completely removed.

Resolution

To resolve this problem, use one of the following methods, and then try to install or upgrade a Microsoft Dynamics CRM client for Outlook computer.

Method 1: If you have Microsoft Office Outlook 2007 installed

1. Start Outlook 2007.

2. On the Tools menu, click Account Settings.

3. Click the Data Files tab.

4. Click Microsoft CRM, and then click Remove.

5. Click the Address Books tab.

6. Click Microsoft CRM Address Book, and then click Remove.

7. Exit Outlook 2007.

Method 2: If you have Microsoft Office Outlook 2003 installed

1. Exit Outlook 2003.

2. Click Start, click Control Panel, click User Accounts, and then click Mail.

3. In the Mail Setup dialog box, click Data Files.

4. Click Microsoft CRM, click Remove, and then click Close.

5. In the Mail Setup dialog box, click E-mail Accounts.

6. Click View or change existing directories or address books, and then click Next.

7. Click Microsoft CRM Address Book, and then click Remove.

8. Click Close to close the Mail Setup dialog box.

Resolution 2

Follow these steps:

1. Start Outlook.

2. On the Tools menu, click Options.

3. On the Mail Setup tab, click Email Accounts.

4. On the Data Files tab, select Microsoft CRM- Not Available, and then click Remove.

E-mail messages are not sent from Outlook Web Access, from Outlook Mobile Access, or from Outlook Rules after you open the Microsoft Dynamics CRM 4.0 client for Outlook (KB950088)

You open the Microsoft Dynamics CRM 4.0 client for Microsoft Office Outlook. If Outlook does not use the cached Exchange mode, e-mail messages are not sent from Outlook Web Access (OWA), from Outlook Mobile Access (OMA), or from Outlook Rules.

This problem is fixed in Microsoft Dynamics CRM 4.0 Update Rollup 1.

952858 (http://support.microsoft.com/kb/952858/ ) Update Rollup 1 is available for Microsoft Dynamics CRM 4.0

The Microsoft Dynamics CRM menu still exists on the Outlook menu bar after you uninstall the Microsoft Dynamics CRM 3.0 client for Outlook (KB949087)

Symptom 1
After you uninstall the Microsoft Dynamics CRM 3.0 client for Microsoft Office Outlook, the Microsoft Dynamics CRM 3.0 menu still exists on the Outlook menu bar.
Or, after you uninstall the Microsoft Dynamics CRM 3.0 client for Outlook, and you try to install the Microsoft Dynamics CRM 4.0 client for Outlook, the Microsoft Dynamics CRM 4.0 client installation tries to perform an upgrade.
Symptom 2
When you open the Microsoft Dynamics CRM 4.0 client for Outlook, you receive the following error message:

An error occurred loading Microsoft Dynamics CRM functionality. Try restarting Microsoft Outlook. Contact your system administrator if error persists.

If you click OK in the error message, the CRM toolbar is listed two times in the Outlook menu bar.

This problem occurs because the Microsoft Dynamics CRM 3.0 client is not completely uninstalled.

To resolve this problem, follow these steps (remember to backup the registry first):

1. Close Outlook. In Task Manager, verify that the Outlook.exe process and the Microsoft.crm.application.hoster.exe process are not running.

2. In Add or Remove Programs, uninstall the Microsoft Dynamics CRM 4.0 client for Outlook, or uninstall the Microsoft Dynamics CRM 3.0 client for Outlook.

3. If the following directories exist on the client computer, delete the directories:

o drive:\Program Files\Microsoft Dynamics CRM directory

o drive: \Program Files\Microsoft CRM

4. Click Start, click Run, type regedit, and then click OK.

5. Open the following registry key:

HKEY_Current_User\SOFTWARE\Microsoft

6. Delete the MSCRMClient hive if it exists.

7. In Control Panel, double-click Mail, and then click E-mail Accounts.

8. Click the Address Books tab,
select the Microsoft Dynamics CRM address book, and then click Remove.

9. Click the Data Files tab, select the Microsoft Dynamics CRM data file if it exists, and then click Remove.

10. Click Start, click Run, type regedit, and then click OK.

11. Open the following registry key:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates

12. Delete the Microsoft Dynamics CRM 3.0 registry hive if it exists.

13. Rename the Outcmd.dat file to Outcmd.dat.old.
Note By default, the Outcmd.dat file is in the following folder:

C:\Document and Settings\User\Application Data\Microsoft\Outlook

Note Outlook re-creates the Outcmd.dat file. However, all the custom menus that you created on the Outlook menu bar are removed.

14. Verify the Microsoft Dynamics CRM Outlook addin is removed. To do this, follow these steps:

1. For Outlook 2003

a. Open Outlook, click Tools, click Options, click the Other tab, click Advanced, and then click COM Addins.

b. Select Microsoft Dynamics CRM, click Remove, then click OK.

c. Click Tools, and then click Customize.

d. Select Microsoft Dynamics CRM, and then click Delete.

e. Click Reset, and then click Close.

f. Close Outlook.

g. Click Start, click All Programs, click Microsoft Dynamics CRM 4.0, and then click Diagnostics.

h. Click Run Diagnostics.

i. Open Outlook.

For Outlook 2007

j. Open Outlook, click Tools, click Trust Centre, click Add-ins, and then click Go.

k. Select Microsoft Dynamics CRM, click Remove, and then click OK.

l. Click Tools, and then click Customize.

m. Select Microsoft Dynamics CRM, and then click Delete.

n. Click Reset, and then click Close.

o. Close Outlook.

p. Click Start, click All Programs, click Microsoft Dynamics CRM 4.0, and then click Diagnostics.

q. Open Outlook.

In addition to these 3 known problems, a number of other issues have been brought to light over the last few months.

The Outlook Client has not installed correctly and you are unable to remove this from the Add/Remove Programs dialogue box or re-install the client over the top of the existing installation.

You have installed the Outlook client but it has not installed correctly. You have attempted to de-install using the Add/Remove programs dialogue but this has failed and another install has not fixed the issue.

· Download the Windows Installer Cleanup Utility and remove the Outlook Client completely from the target computer.

· Download Windows Installer Cleanup Utility

Missing Folders in the Outlook Client

After the Outlook Client has been installed, the user can only see ‘Deleted Items’ and ‘Search Folders’ under ‘Microsoft CRM’ in the folder pane. In addition, the user can access the CRM through the webclient and all other configuration settings are correct.

Resolution

1) Right click ‘Microsoft CRM’

2) Select ‘Properties’

3) Select ‘Home Page’

4) Ensure the URL is correct and present. It should resemble the following example : http://<server>/_root/stage.aspx?url=SiteMapNavPage.aspx&id=root

5) Restart the Outlook Client

Outlook Freezes and Context Menus do not work as expected

General errors and issues like this are often the result of a corrupted or missing patch. Complete the following as a matter of course.

1) Download and re-install MSXML4.0 SP2 (Download MSXML4.0 SP2)

The Microsoft CRM Toolbar at the top of the Outlook Client is greyed out

From time to time, users may experience the phenomenon of the Microsoft CRM toolbar being ‘greyed out’ and therefore unusable. This is most often the result of the user disconnecting from the network and then re-connecting again. The Outlook Client does not always detect the reconnection and therefore does not re-initialise the interface. Try one of the following :

1) Attempt to reconfigure the Client

2) Close Outlook

3) Click Start

4) Click All Programs

5) Microsoft CRM 4.0 Configuration Wizard

6) Reboot and restart Outlook

Alternatively, a refresh of the plugin is necessary. To complete this procedure, do the following :

1) In Outlook 2007, click settings,

2) Click Trust Center

3) Click Addins

4) Click the “go” button on the bottom of the form to manage COM plug-ins

5) Click the check box next to the outlook plugin, then click ok

6) Log out of Outlook

7) Log back in to Outlook, go back to the trust center, re-enable the plugin

8) Close outlook, reopen Outlook.

Further, there is a known issue with IE7 and the Microsoft Outlook Client when they exist on the same machine. If the Microsoft Outlook toolbar is greyed out AND the user can still access Accounts, Contacts and other data elements, then the following procedure may be appropriate. Note, this procedure is a last resort and only to be performed if the registry has been backed up first.

1) Click Start, click Run, type regedit in the Open box, and then click OK.

2) Locate and then click the following registry subkey: HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_SUBDOWNLOAD_LOCKDOWN

3) Right-click Outlook.exe, and then click Modify.

4) In the Value data box, type 0, and then click OK.

Outlook Client hanging and general connectivity errors

The user receives several error messages when initialising the Outlook client and messages are not being processed from the Drafts folder. This is often caused by the interaction between the Outlook client and various third party software programs. Try the following :

1) Disable all popup blockers

2) Add the Microsoft Web Client URL to the Trusted Sites within Internet Explorer

3) Remove Google Toolbar completely

4) Ensure that the Microsoft CRM URL is added to any trusted list within an Anti-Virus program and that all emails from the Forward Mailbox (if exists) are trusted.

5) Clear the Internet Explorer Cache of Temp Files and Cookies

You cannot view any e-mail messages in the folders after you install the Microsoft Dynamics CRM 4.0 On-Premise client for Outlook

After you install the Microsoft Dynamics CRM 4.0 On-Premise client for Microsoft Office Outlook, you can select different folders in Outlook. However, you cannot view any e-mail messages in the folders. In the area where the e-mail messages should be displayed, Outlook displays “loading.”

This issue has been identified by Microsoft as being relatively common. The resolution for this issue is to install the Update Rollup 1 (Update Rollup1 – KB952858)

Microsoft Dynamics CRM Plug-in Template for Visual Studio

Posted by AnonymousDeveloper | Posted in CRM Configuring, CRM Development, CRM General Resources | Posted on 30-10-2008

0

Peter Hecke has created a Dynamics Plugin template for Visual Studio. This is extremely helpful not just for experienced developers but also for people just starting out with CRM plugin development as the SDK can be a little coy in places regarding the HOW of actually implementing something. You can read Peter’s original post HERE

 

Thanks Peter!

Count Activities / History

Posted by AnonymousDeveloper | Posted in CRM Configuring, CRM Development, CRM General, CRM General Resources, Javascript Snippets | Posted on 11-08-2008

0

This script (again by Jim Wang) will ‘count’ the number of activities and history records there are for a record and show the results Hotmail style as a bracketed number in the link.

 
var buXml = GetRegardingActivity();
 
if(buXml != null)
{
    var buNodes = buXml.selectNodes("//BusinessEntity/statecode"); // CRM 3.0
 
    //var buNodes = buXml.selectNodes("//BusinessEntity/q1:statecode"); // CRM 4.0
    var iActivity = 0;
    var iHistory = 0;
 
    if(buNodes != null )
    {
        /*get values*/
        for( i = 0; i < buNodes.length; i++)
        {
            switch(buNodes[i].text)
            {
                case "Open" : iActivity++; break;
                case "Scheduled" : iActivity++; break;
                case "Completed" : iHistory++; break;
                case "Canceled" : iHistory++; break;
            }
        }
 
        if(document.getElementById('navActivities') != null)
        {
            document.getElementById('navActivities').getElementsByTagName('NOBR')[0].innerText = document.getElementById('navActivities').getElementsByTagName('NOBR')[0].innerText + " (" + iActivity + ")";
        }
 
        if(document.getElementById('navActivityHistory') != null)
        {
            document.getElementById('navActivityHistory').getElementsByTagName('NOBR')[0].innerText = document.getElementById('navActivityHistory').getElementsByTagName('NOBR')[0].innerText + " (" + iHistory + ")";
        }
    }
}
 
function GetRegardingActivity()
{
    var xml = "" +
    "<?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\">" +
    " <soap:Body>" +
    " <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\" xmlns=\"http://schemas.microsoft.com/crm/2006/WebServices\">" +
    " <q1:EntityName>activitypointer</q1:EntityName>" +
    " <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
    " <q1:Attributes>" +
    " <q1:Attribute>statecode</q1:Attribute>" +
    " </q1:Attributes>" +
    " </q1:ColumnSet>" +
    " <q1:Distinct>false</q1:Distinct>" +
    " <q1:Criteria>" +
    " <q1:FilterOperator>And</q1:FilterOperator>" +
    " <q1:Conditions>" +
    " <q1:Condition>" +
    " <q1:AttributeName>regardingobjectid</q1:AttributeName>" +
    " <q1:Operator>Equal</q1:Operator>" +
    " <q1:Values>" +
    " <q1:Value xsi:type=\"xsd:string\">" + crmForm.ObjectId + "</q1:Value>" +
    " </q1:Values>" +
    " </q1:Condition>" +
    " </q1:Conditions>" +
    " </q1:Criteria>" +
    " </query>" +
    " </soap:Body>" +
    "</soap:Envelope>" +
    "";
 
    var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    xmlHttpRequest.Open("POST", "/mscrmservices/2006/CrmService.asmx", false);
    xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2006/WebServices/RetrieveMultiple");
    xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
    xmlHttpRequest.send(xml);
 
    var resultXml = xmlHttpRequest.responseXML;
    return resultXml;
}

I have tested this myself and it causes the same problems as described here. You should note that this script should be modified with a switcher to take account of the differences in XMLHttpRequest handling between the browser versions.

Use Javascript to execute a CRM Workflow

Posted by AnonymousDeveloper | Posted in CRM Configuring, CRM Development, CRM General, CRM General Resources, Javascript Snippets | Posted on 11-08-2008

0

I love this method. Thanks to Jim Wang for this very useful script.

/* the function */
ExecuteWorkflow = function(entityId, workflowId)
{
    var xml = "" + 
    "<?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=\"ExecuteWorkflowRequest\">" + 
    "        <EntityId>" + entityId + "</EntityId>" + 
    "        <WorkflowId>" + workflowId + "</WorkflowId>" + 
    "      </Request>" + 
    "    </Execute>" + 
    "  </soap:Body>" + 
    "</soap:Envelope>" + 
    "";
 
    var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.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", xml.length);
    xmlHttpRequest.send(xml);
    var resultXml = xmlHttpRequest.responseXML;
    return(resultXml.xml);
}
 
/* call */
var theWorkflowId = "3FD2DD58-4708-43D7-A21B-F0F90A0AA9F2"; //change to your workflow Id
ExecuteWorkflow(crmForm.ObjectId, theWorkflowId);

However, further to my previous post about XMLHttp request, it should be noted that you will require a ’switcher’ to differentiate between browser versions that use this function.

See here

How To : Pop Up Notes

Posted by AnonymousDeveloper | Posted in CRM Configuring, CRM Development, CRM General, Javascript Snippets | Posted on 11-08-2008

0

I recently came across a new requirement and that was to view the related notes of a record without having to actually enter the record. Dynamics offers this functionality by allowing us to add buttons within the ISV, so there are in fact two ways of doing this.

Option 1 : From the Grid View

1) Add a new button to the ISV and change the ‘winmode’ parameter to 2

2) Note that for some reason (still to be investigated) buttons from the Grid view do not pass the parameters of the selected record properly. No, I have no idea why and would welcome any feedback on this.

3) Add the following code to a blank page and call it from the ISV button

 
         function listselecteditems()
         {
            var placeholder = document.getElementById("test");
            var sGUIDValues = "";
            var selectedValues;
            //Make sure window.dialogArguments is available.
            if (window.dialogArguments)
            {
               selectedValues = new Array(window.dialogArguments.length -1);
            }
            else
            {
               placeholder.innerText = "window.dialogArguments is not available.";
               return
            }
            selectedValues = window.dialogArguments;
            if (selectedValues != null)
            {
               for (i=0; i < selectedValues.length; i++)
               {
                  sGUIDValues += selectedValues[i] +"\n";
               }
               var notesUrl = "/_controls/notes/notesdata.aspx?id="+ selectedValues + "&ParentEntity=112&EnableInlineEdit=false&EnableInsert=false"
                            document.write('<Iframe id="PopUpNotes" name="PopUpNotes" src="'+notesUrl+'" width="100%" height="90%" scrolling="yes" frameborder="0"></iframe>')
                             
                            
            }
            else
            {
               placeholder.innerText = "No records were selected.";
            }
         
                 }

 

Explanation of Option 1

As you can see, this is a modification of the code using in the SDK to return the GUID’s of selected records. It uses the window.dialogArguments method and all we have done is add an appropriate IFrame to the popup page. The GUID is matched from the dialogArguments to the related notes within the entity and the Iframe shows the results. It should be noted that this method does not allow notes to be edited or appended. I suspect this is because the Iframe is not passing the information back to the CRM in order to perform this action.

Option 2 : From the Form View

Although you are probably asking yourself why you would want to do this since each form has a native ‘notes’ tab, you would be right. This example demonstrates how to take the information from the querystring and use that information with Javascript to achieve the same goal. Now, if I understood why the button on the Grid view does not pass the parameters properly, I could use this method from Option 1 and have truly popup notes without having to use dialogArgumets.

1) Add yourself a new button within ISV but this time, you can use any winmode you like including 0 or 1

2) Paste this code into a clean js file and call it from the button

function parseSearchString()
{
var pairs=unescape(location.search.substring(1).replace(/\+/g," ")).split('&');
for (var i=0;i<pairs.length;i++){
var pair = pairs[i].split('=');
this[pair[0]]=pair[1];
}
}
var search = new parseSearchString();
 
function listselecteditems()
                 
{
var notesUrl = "/_controls/notes/notesdata.aspx?id="+ search["id"] + "&ParentEntity=112&EnableInlineEdit=false&EnableInsert=false"
//output passed variables
document.write('<div id="test">');
document.write('<Iframe id="PopUpNotes" name="PopUpNotes" src="'+notesUrl+'" width="100%" height="90%" scrolling="yes" frameborder="0"></iframe>')
document.write('</div>');
 
}     
    

Explanation of Option 2

As you can see, this code takes the URL, breaks it into little pieces and then using the piece that we need (the GUID) to return the correct records within the Iframe. This approach can be extended to accommodate any ‘related’ information for the record and not just notes.