I have worked with a couple customers lately that would receive a script error when opening and navigating around Microsoft Dynamics CRM 2011. The first sign of the issue was an “Error on Page” message on the bottom left hand corner of the IE window. When they would attempt to browse to another area or close the form the following “Microsoft Dynamics CRM has encountered an error” message was thrown.

image

 

To see details of the script error you are able to click the link “View the data that will be sent to Microsoft” and the details will be displayed in another window.  For this specific issue the following script error report was provided stating that “The system cannot find the file specified”.

<CrmScriptErrorReport>
<ReportVersion>1.0</ReportVersion>
  <ScriptErrorDetails>
   <Message>The system cannot find the file specified.</Message>
   <Line>1</Line>
   <URL>/_static/_common/scripts/main.js?ver=-863096087</URL>
   <PageURL>/main.aspx?etc=2&extraqs=%3f_gridType%3d112%26etc%3d112%26id%3d%257b6VCED6531-C5W3-R083-A86T-015676G13257%257d%26rskey%3d949894547&pagetype=entityrecord</PageURL>
   <Function>anonymous($p0,$p1){try{if(!IsNull($p0)){var$v_0=String.format("Timestamp:Loaded={0},Updated={1},Saved={2}{3}{4}",this.$X_3.toString(),!IsNull(this.$J_3)?this.$J_3.toString():(newDate).toString(),!IsNull(this.$R_3)?this.$R_3.toString():"",this.$2_3,$p0);th</Function>
   <CallStack>
    <Function>anonymous($p0,$p1){try{if(!IsNull($p0)){var$v_0=String.format("Timestamp:Loaded={0},Updated={1},Saved={2}{3}{4}",this.$X_3.toString(),!IsNull(this.$J_3)?this.$J_3.toString():(newDate).toString(),!IsNull(this.$R_3)?this.$R_3.toString():"",this.$2_3,$p0);this.get_element().setAttribute(this.$P_3,$v_0)}}catch($$e_1_0){var$v_1=String.format("Timestamp:Loaded={0},Updated={1},Saved={2}{3}{4}",this.$X_3.toString(),this.$J_3.toString(),!IsNull(this.$R_3)?this.$R_3.toString():"",this.$2_3,$p1);this.get_element().setAttribute(this.$P_3,$v_1)}this.get_element().save("RVItems")}</Function>
    <Function>anonymous($p0){this.$X_3=this.$17_3;var$v_0=this.$g_3($p0);$v_0=this.$12_3($v_0);this.$G_3($v_0,$v_0);for(var$v_1=0;$v_1<this.$I_3.length;$v_1++){var$v_2=this.$I_3[$v_1];$v_2($v_0)}this.$I_3=newArray(0);return$v_0}</Function>
    <Function>anonymous($p0,$p1){var$v_0=null;if($p0.Success){$v_0=$p0.ReturnValue;this.$14_3($v_0)}this.$k_3=false}</Function>
    <Function>anonymous(){returnb.apply(a,arguments)}</Function>
    <Function>readyStateChanged()</Function>
   </CallStack>
  </ScriptErrorDetails>

 

After troubleshooting this issue we found that Microsoft Dynamics CRM 2011 is trying to write data to the Internet Explorer “UserData” folder which was missing in the users windows profile. If the folders are redirected before the user ever opens Internet Explorer the folder will not get pre-created. Once the profile is moved to the network share Internet Explorer is not able to create the folder any longer.  If the user has been in Internet Explorer prior to enabling folder redirection then the issue will not happen since the folder was pre-created.

We were also able to reproduce this issue outside of Microsoft Dynamics CRM 2011 by going to this URL and trying to save or load data. It will result in the same script error. http://samples.msdn.microsoft.com/workshop/samples/author/persistence/userData_1.htm

To resolve the issue the missing folder can be manually created in the users profile. Alternatively, a script such as the following could be executed to create this missing folder.

if not exist "%APPDATA%\Microsoft\Internet Explorer\UserData" md "%APPDATA%\Microsoft\Internet Explorer\UserData"

This type of script could be executed via the group policy to ensure the UserData folder exists for any new profiles that are created. Once the UserData folder is created Internet Explorer is able to write the necessary data.

Below is an example of the type of data you may find in the folder and subfolders.

image

image

 

If you are running into this issue or planning to deploy Microsoft Dynamics CRM 2011 in an environment with roaming profiles you will want to ensure this folder exists.  This could be a common scenario where Citrix is used to access Microsoft Dynamics CRM 2011.

The Internet Explorer team is investigating ways to prevent this from happening in the future, but for now this workaround can be used to prevent or resolve the issue.

Thanks,

Jeremy Morlock

Microsoft Premier Field Engineer