IAG 2007 Community Wiki

Symantec Enterprise Vault adds archiving functionality to Outlook and makes it accessible through OWA. It does this by adding icons and menus to OWA.

The icons and menus are added by dynamically attaching more nodes to the DOM of OWA, and injecting custom scripts by loading them via XMLHTTP and injecting them into the execution context of OWA by using JavaScript's eval() statement.

There are a few challenges when publishing this application because the authors have made a few assumptions:
  • that there is no Host Address Translation between the client and OWA;
  • about the way the URI is built (i.e. that there are 5, not 7 components in the URI).

This can be remedied by adding certain entries to the Application Wrapper XML file that change the injected code a bit.

Namely,
  • for self-referencing links, help KVS examine the root of the user's mailbox correctly.
  • for injecting the code, use the HAT prefix of the application instead of assuming KVS lives at the root of OWA.

Here's the Application Wrapper code. Note you will have to adjust the sections where it says INTERNAL_NAME and PORTAL_APPLICATION_URL according to your setup.

<!-- begin custom changes for OWA with KVS -->
	<DATA_CHANGE>
		<!-- enable KVS restore folder funtionality, which is not properly rewritten -->
		<URL>/enterprisevaultproxy/archiveexplorerui.asp.*</URL>
		<SAR>
			<SEARCH encoding="base64">OWARestoreFolderUrl="https://INTERNAL_NAME/</SEARCH>
			<REPLACE encoding="base64">OWARestoreFolderUrl="/whalecomPORTAL_APPLICATION_URL/whalecom1/</REPLACE>
		</SAR>
	</DATA_CHANGE>

	<DATA_CHANGE>
		<URL>/exchweb/enterprise%20vault/6\.0/EVShared\.js</URL>

		<!--	change code in KVS so that when it builds self-referencing links and needs to determine the base
			directory for this purpose, it will not cut off the add'tl two URL segments and thus truncate the
			path prematurely. -->
		<SAR>
			<SEARCH encoding="base64">function EVGetRootUrl()
{
	//Return the url to the root folder of the mailbox
	return document.location.href.split("/").slice(0,5).join("/");
}</SEARCH>
			<REPLACE encoding="base64">function EVGetRootUrl()
{
	//Return the url to the root folder of the mailbox
	return document.location.href.split("/").slice(0,7).join("/");
}</REPLACE>
		</SAR>
	</DATA_CHANGE>

	<DATA_CHANGE>
		<URL case_sensitive="false">/.*util_owa\.js</URL>

		<!-- add HAT signature to EV*.js files that are loaded by util_owa.js-->
		<SAR>
			<SEARCH encoding="base64">"/exchweb/</SEARCH>
			<REPLACE encoding="base64">"/whalecomPORTAL_APPLICATION_URL/whalecom1/exchweb/</REPLACE>
		</SAR>

		<!-- display alerts for all JS exceptions. -->
		<SAR>
			<SEARCH encoding="base64">//Absorb any errors -we don't want the client constantly reminded if their browser or os isn't supported.</SEARCH>
			<REPLACE encoding="base64">alert("N:"+e.name + "M:" + e.message);</REPLACE>
		</SAR>
	</DATA_CHANGE>

<!-- end custom changes for OWA with KVS -->

ScrewTurn Wiki version 2.0.22. Some of the icons created by FamFamFam. Here's an Imprint.
This site is not affiliated with, sponsored by or under the control of Microsoft Corporation. Microsoft is not responsible for any content contained within this web site. This site is not endorsed by Microsoft Corporation. Microsoft™, IAG 2007™, ISA Server™, Windows™ are either registered trademarks or trademarks of Microsoft™ Corporation in the United States and/or other countries.

See the Code of Conduct and Site FAQ for additional information.