Thursday, 17 April 2014

IE11, PeopleTools 8.53 and Compatibility Mode

*** #3 ARTICLE UPDATE*** 21 July 2014
Included in PeopleTools patch 8.53.14 was a resolution to bug 18531267 which "Adds IE11 support to Javascript". This fix relates to JavaScript which detects browser versions. From IE11 the user agent string uses the browser engine name "Trident" and not the usual "MSIE" of previous versions. See here

*** #2 ARTICLE UPDATE*** 4 June 2014
Tech Update - PeopleSoft Certified with Internet Explorer 11 (Doc ID 1672394.1)

"May 14, 2014. Internet Explorer 11 is now certified with PeopleTools 8.53. The minimum patch level supported with IE 11 is PT 8.53.11. The certification can be found in the certification database on My Oracle Support (MOS). PeopleTools 8.52 has been certified as well, with PT 8.52.22 being the minimum supported level."

My interpretation of this is that IE11 is now certified in standard mode with 8.53.11 and 8.52.22. Running in compatibility mode is not required.

*** #1 ARTICLE UPDATE*** 7 May 2014
I'm trying to obtain confirmation of this from the Oracle Platforms Team but according to a MOS analyst there is now support for running IE10 and IE11 in Standard Mode if you're on Patch 11 of PeopleTools 8.53. What this means (I believe) is that from Patch 11 all the necessary "X-UA-Compatible" directives have now been included in the response headers.

According to Oracle Certifications Database Microsoft IE11 is supported on PeopleTools 8.53.

However, according to the PeopleTools 8.48 - 8.53 Browser Compatibility Guide (Doc ID 704492.1) - Page 34 - IE10 (ten) MUST be run in Compatibility Mode.  There is no statement anywhere that I can see about what mode to run IE11 in.

So, what's this all about. Some things I know.... some things I'm learning about..... some things I take an educated guess on and others I have cases open with My Oracle Support.

Please feel free to correct, comment or add to my discussion here.

What is Compatibility Mode

compatibility mode is a software mechanism in which a software emulates an older version of software in order to allow obsolete software or files to remain compatible with the computer's newer hardware or software.

What does this mean for Internet Explorer?

Internet Explorer 8 was promoted by Microsoft as having stricter adherence to W3Cdescribed web standards than Internet Explorer 7. As a result, as in every IE version before it, some percentage of web pages coded to the behavior of the older versions would break in IE8. This would have been a repetition of the situation with IE7 which, while having fixed bugs from IE6, broke pages that used the IE6-specific hacks to work around its non-compliance. This was especially a problem for offline HTML documents, which may not be updatable (e.g. stored on a read-only medium, such as a CD-ROM or DVD-ROM).
To avoid this situation, IE8 implements a form of version targeting whereby a page could be authored to a specific version of a browser using the X-UA-Compatibledeclaration either as a meta element or in the HTTP headers.[1]
In order to maintain backwards compatibility, sites can opt-into IE7-like handling of content by inserting a specially created meta element into the web page that triggers the "Compatibility mode" in the browser, using:[2]
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
A newer version of the browser than the page was coded for would emulate the behavior of the older version, so that the assumptions the page made about the browser's behavior holds true.

What does this mean for PeopleSoft?

If you use a version of PeopleTools that has support for IE8 or IE9 and you use one of these browsers then the browser must be set to run in Standards Mode.  See Pages 36 and 38 of Doc ID 704492.1.

If you use a version of PeopleTools that has support for IE10 or IE11 and you use one of these browsers then the browser must be set to run in Compatibility Mode.

What are some of the effects of using compatibility mode?

A number of things occur when running in compatibility mode.

1) some html and JavaScript hacks written by PeopleSoft to work around the non-compliance of standards by older versions of IE are supported under compatibility mode in new version of IE.
2) running in compatibility mode may also result in the older, slower and less efficient JavaScript engine being used.  This is why we see much slower rendering of complex or large pages even in the supposedly faster IE11 browser compared to to say Google Chrome or FireFox.

Taking a Closer Look at 8.53 HTTP Responses

Using Fiddler (free from Telerik) to capture and examine http responses from PeopleSoft to IE10 and IE11 we can see that some (but not all) responses from POST method requests contain the X-UA-Compatible: IE=8 or X-UA-Compatible: IE=EmulateIE8 directives in the http header.  This instructs the browser to render the page using compatibility mode.

So why then do we also need to set the browser to be in compatibility mode if the pages themselves from PeopleSoft are instructing the browser to be in compatibility mode?

My guess is that not all responses contain this directive and specifically AJAX calls that return html fragments do not generally contain this directive.  This looks like a work in progress by the PeopleSoft developers and hence because not all responses instruct the browser to run in compatibility mode we have to set the browser to process all responses from PeopleSoft in compatibility mode.

There is a difference between IE10 and IE11 here.  Far fewer http responses contain the compatibility directive in IE11 then in IE10.  It seems to be that only responses from psp servlet contain the directive in IE11.  It's possible that the portal header instructs the browser and therefore anything rendered in the content frame is also run in compatibility mode.  It's also possible that when PeopleTools identifies the browser being used on signin that it knows that IE11 has improved support for older style HTML and JavaScript and so the compatibility directive is not required.  I am not 100% certain of this but it is my best guess with what I've observed.  If anyone has greater insight into this then I'd value your input.

How to set IE10 and IE11 to run in Compatibility Mode?

In IE10 and IE11 under the Tools|Compatibility View Settings menu you can add specific web servers to a list of sites to run in compatibility mode.

In IE11 you can also enable Enterprise Mode which gives greater flexibility in specifying servers and also centralised control over deployment.   See here for more details

The Bottom Line

This is all very technically interesting but the bottom line is that if you're using IE10 or IE11 with 8.53 then you should enable compatibility mode.  

PeopleSoft 9.2 Upgrade Insights from Oxfam GB

At the recent UKOUG PeopleSoft Roadshow I presented some thoughts and experiences on a major FSCM 9.2 upgrade project that I'm working on at Oxfam GB.

If you're a member of UKOUG then you can download my presentation from UKOUG site here along with a link to the SQL script to report all customised objects in your database.

If you're not a member (and you should be if you're in the UK) then links to the PowerPoint and SQL script are below.


SQL Script

Happy Upgrading and Happy Easter!