Sunday, December 22, 2013

Resolving SalesLogix Compatibility Issues with Internet Explorer

When new versions of browsers are released they are supposed to enable new technologies and support new standards however for the first few weeks it seems like their only purpose is to break existing sites and web applications.  It is probably simple for most developers to troubleshoot these issues, however for us SalesLogix Administrators  who are not developers this is not so easy.  Thus I am writing this blog to help you troubleshoot Internet Explorer and SalesLogix compatibility issues from an Administrator's perspective.

Ideally all websites and web applications would be maintained to properly render on all current browsers, however given this is not practical, browsers need to determine the compatibility of a website and render the website according to that website’s compatibility level.  In Internet Explorer the identified compatibility level of a website is called the Document Mode.  Internet Explorer uses various factors to determine which Document Mode will be used.  (Here is a detailed explanation of the logic used http://blogs.msdn.com/b/ie/archive/2010/03/02/how-ie8-determines-document-mode.aspx).  Experienced developers use techniques in their code and site deployment so Internet Explorer can correctly identify the Document Mode to use.

To determine what Document Mode is being used by your Internet Explorer browser on your SalesLogix deployment you need to open SalesLogix in Internet Explorer and then hit the F12 key to open the Internet Explorer Developer Tools.  In addition to displaying the Document Mode, you will also see the Browser Mode.  The Browser Mode is the browser version that Internet Explorer is emulating, developers will change this setting to test how a website performs in older versions of IE without installing those older versions on their computer.  The Browser Mode will typically default to the version of IE you are running, however the default Document Mode is where we want to focus our attention as this may very depending on the code in SalesLogix, the IIS configuration, the IE Security Zone settings and other settings defined in the reference above.

SalesLogix frequently releases updates for SalesLogix to take advantage of new technologies and to keep it compatible with the current versions of Internet Explorer.  The compatibility of each version of of SalesLogix is documented in their Compatibility Checklist.  Generally the SalesLogix web application will render optimally if the newest “qualified” browser is used.  I have seen that newer versions of Internet Explorer, although not tested and qualified by SalesLogix, will typically render correctly as well as long as Internet Explorer selects the correct Document Mode for the site. 

Below are the results of my independent testing of various Document Modes with SalesLogix 7.5.2 and SalesLogix 8.0:


SalesLogix Version Preferred Document Mode
SalesLogix 7.5.2 IE8 Standards 1
SalesLogix 8.0 IE10 Standards 2

1 IE7 Standards is compatible as well.  (IE9 Standards and  IE10 Standards will not correctly render)
2 IE9 Standards and IE8 Standards are compatible as well (IE7 Standards will not correctly render)

 

SalesLogix 7.5 issues with Internet Explorer 9 and Newer

If Internet Explorer 9 or newer are causing issues for SalesLogix 7.5 it is likely because IE is using the Document Mode IE9 Standards or newer.  I have seen instances where only the top SalesLogix toolbar loads and the rest of the page is blank.  If this is the case, one method to fix the issue is adding the following Custom HTTP Response Header to the SalesLogix site configuration in IIS.  This will force IE to render SalesLogix with the default document mode of IE8 Standards and should fix the issue.


SalesLogix 8.0 and Internet Explorer's Local Intranet Zone

Although the SalesLogix Implementation Guide instructs you to add your SalesLogix URL into the Trusted Sites zone of Internet Explorer, there are times were due to existing Group Policies you may find that your site is in the Local Intranet Zone.  This causes an issue with SalesLogix 8.0 because sites in the Local Intranet zone  by default are rendered in Compatibility View and with the Document Mode of IE7 Standards.  SalesLogix 8.0 does not play well in IE7 Standards document mode, more specifically I have seen IE prevent the list view from loading, the end user just gets an indefinite scrolling wheel and the list view never loads.  The SalesLogix source code actually contains a META tag in the HTML header  X-UA-Compatible="IE=Edge" which informs Internet Explorer to use the newest Standards Document Mode supported by the browser, however because of the logic in IE and the fact that the site is in the Local Intranet Zone, the Open In Compatibility View setting in IE override what is in the code.


For more information on this behavior in Internet Explorer read the following blog: (http://blogs.msdn.com/b/ie/archive/2009/06/17/compatibility-view-and-smart-defaults.aspx)  


There are three ways to fix/prevent this:
1) Remove the URL from the Intranet Zone and add it to the Trusted Sites zone.  This is the preferred route as it matches the instructions in the Implementation Guide.
2) Disable the Internet Explorer setting “Display Intranet Sites in Compatibility View”.  To do so open Internet Explorer and go to Tools pull-down menu, Compatibility View Settings, and then uncheck the box “Display Intranet Sites in Compatibility View”. 
3) Add a Custom HTTP Response Header to the SalesLogix SLXClient site settings in IIS configuration which will override IE's Document Mode selection.  Our Custom HTTP Header X-UA-Compatible="IE=Edge" will tell IE to use the newest Standards supported.  To add this open the IIS Manager console on your web server, on the left pane expand your listing of Sites, find your SalesLogix web site and expand it, and then select your SLXClient application.  On the right-hand pane find the option for Custom HTTP Response Headers.  Click the Add button and then add the entry shown below:


Hopefully this will help you fix your Internet Explorer Compatibility issues with SalesLogix.  Here are some other references that may be helpful when troubleshooting Compatibility Issues:

MSDN Document Compatibility - http://msdn.microsoft.com/en-us/library/hh781499(v=vs.85).aspx

Browser Mode vs. Document Mode - http://stackoverflow.com/questions/2950598/ie8-browser-mode-vs-document-mode?lq=1

How Internet Explorer Chooses Between Document Modes -  http://msdn.microsoft.com/en-us/library/ff405803(v=vs.85).aspx

Compatibility View and “Smart Defaults” - http://blogs.msdn.com/b/ie/archive/2009/06/17/compatibility-view-and-smart-defaults.aspx

Monday, November 5, 2012

Creating ShoreTel Prefix Lists

When installing a ShoreTel phone system at a new site you might have issues dialing long distance to some phone numbers if you haven't configure your Local Prefix List for the trunk group at that site.  Specifically you can expect to have problems calling phone numbers in your same area code which need to be treated at long distance. 

For example an office in Fargo, North Dakota will have a 701 area code, however calls placed to Bismarck and Grand Forks, North Dakota (both of which are also in the 701 area code) need to be dialed as long distance.  To accomplish this we need to create a prefix list of NPA-NXX numbers that are local to Fargo.  When I had to do this for the first time I didn't know how to go about it, thus below is the process I developed.  There are likely other ways to accomplish this that are simpler, however here is the process I used for looking up the numbers to include an my list and importing those numbers into ShoreTel Director:

1)  Open Microsoft Excel and with a blank workbook open go to the Data tab on your ribbon, and click Get External Data From Web.



2) Using the NPA-NXX (the first six digits) of your main phone number, edit the following URL for your site and paste it into the address field then click Import.  (In this example, the main number assigned to my Fargo office is 701-237-1234, thus I use 701 and 237 in the URL.):

http://www.localcallingguide.com/xmllocalprefix.php?npa=701&nxx=237



3) In Excel delete all the columns except the the ones labeled NPA and NXX.  With only these two columns remaining also delete the header row.  Your data should look like the following.  After you have the data formatted save it as a comma delimited test file.  It is imperative that the file is in the comma delimited format because this is the format ShoreTel is expecting to import.



4) Launch ShoreTel Director, expand the Trunks menu and select Local Prefixes.  On the Local Prefixes page click, "Add new list."  Give the list a name such as "Fargo Prefixes," then click the Import button.  Browse for the comma delimited file you created earlier and click Upload.  You should now see the Prefixes in your list.



5)  Expand the Trunks menu and click Trunk Groups.  Open the Trunk Group you are configuring, and then near the bottom of the page you fill find the field labeled Prefix List.  Select your list from the drop-down.



6) Now it's time to place several test calls to local phone numbers, in-state long distance phone numbers and out of state long distance phone numbers. 

Monday, July 30, 2012

Sage SalesLogix Error: System.OutofMemoryException

The Sage SalesLogix 7.5.2 Web Client has generally been a very stable CRM platform.  If there is one thing that can/should be done to prevent unexpected issues it is regularly perform an IISReset on the Front End Web Server(s). 

I had not done this for a while and after 27 days of smooth uninterrupted up time we started to get the following error:

The state information is invalid for this page and might be corrupted."
Invalid viewstate.  ..................
Exception of type 'System.OutofMemoryException' was thrown.


Upon looking a the performance of our Front-End Web Server, the w3wp.exe *32 service was consuming 2.9GB of memory, way more than the 300-500MB I am accustomed to seeing. 

After performing an "IISReset /Restart" the associated web application services were restarted which released that large consumption of memory, and our errors were resolved.  (For a more detailed explanation of the IISReset command click here.)

In summary, in the event you see the above error, perform an IISReset.  If you are simply looking for suggestions on how to keep your SalesLogix Web Client running error free, my personal advice is schedule an automated weekly IIS Reset during off-peak hours.

Tuesday, July 24, 2012

Repair Off-hook Button on ShoreTel Phone IP230

If you have a ShoreTel phone that does not always come off-hook when you lift the handset, it is likely that the contacts on the internal sliding switch have become corroded or bent and are no longer making good contact.  If you are not afraid of rolling up your sleeves and playing with electronics and your phone is out of warranty, then you have nothing to lose.  Follow these steps to fix your phone.  (Note: I am not a ShoreTel Technician.  I am an end-user whom learned the following from coworkers and from my own experience.  If you decide to perform the following procedure do so at your own risk to yourself, your phone, and your warranty..)
Here is what you will need:
- A phillips screwdriver

- A small needle nose pliers
- A small piece of extra fine sandpaper
- A paper clip

The first time you do this it will likely take about an hour, however after a little practice this can be completed in about 20 minutes.



Picture 1
1) First prepare the phone by unplugging all network cables from the back of the phone, disconnect the handset from the base, and remove the phone's stand. 
2) Next, flip the phone face down and remove the 7 screws that hold the back on the phone (See Picture 1). Once the back is loose, fold it open and set it adjacent to the front of the phone, ensuring that the wires have a little slack and do not get pulled tight.

Picture 2
3) Locate the Off-hook button's circuit board and remove the two screws holding it in place (See Picture 2).












Picture 3

4) With the Off-hook board loose, find the slider switch and using a small needle nose pliers bend the back side of the switch up 90 degrees (See Picture 3). 









Picture 4

5) Next rotate the switch assembly upside down so when you remove the spring and the contacts they do not fall out (See Picture 4).  Once the switch is positioned in this way remove the spring and then push the black button from the opposite side to slowly remove the contacts.  (Note: The metal contacts sit loose in the black button thus be careful that these do not unintentionally fall out while disassembling the switch.)

Picture 5



6)  You should now have two loose metal contacts, take a piece of very fine sandpaper and slide it between the contacts to remove the corrosion, it won't take much sanding (See Picture 5).  Additionally if you have a little electronic contact cleaner apply it to the contacts.






Picture 6
7) (Note: This is the most difficult part and the point at which I believe you are most likely to accidentally damage your phone.  Take your time with this step.)  Next put the contacts back in the black button and align them with the metal rails inside the switch assembly.  Once they are aligned I use a paperclip to gently open the contacts so they can slide onto the metal rails.  This takes a gentle balance of opening the contacts while applying just a little pressure to slide the assembly together (See Picture 6). 





8)  Now insert the spring and bend the back side of the switch assembly closed.  As  you bend this closed be sure the spring does not wiggle out of place, there is a little notch that the spring should sit on. 

9)  With the switch assembly back together, reassemble the phone by screwing the off-hook circuit board back to the phone, put the back on the phone and tighten the 7 screws, connect the base, connect the handset, and finally connect the network cables.

I hope that these instructions help you protect your investment in your ShoreTel phones.  I have only performed this procedure on ShoreTel UP230 phones, however I assume similar procedure would work on the following:

ShoreTel IP Phone 565g
ShoreTel IP Phone 560g
ShoreTel IP Phone 560
ShoreTel IP Phone 530
ShoreTel IP Phone 265
ShoreTel IP Phone 230g
ShoreTel IP Phone 230
ShoreTel IP Phone 212k
ShoreTel IP Phone 115

ShoreTel IP Phone 110