Time zones

If the CRM.interface and Domino server/connector are located in different time zones, differing contact times are stored in Aurea CRM and Lotus Notes.

Therefore connector sends time-zone information with in the SYNCML header.

In order to correct this behavior, the following must be added to the SymcML_gw2mm.xslt style sheet:

A variable (vTimeOffset) which can be used to specify the time difference in hours (note: not the difference to UTC, but the difference between the two time zones):

e.g. <xsl:variable name='vTimeOffset'>9</xsl:variable>

Add the following section below the <xsl:template match="syncml:Meta"> template:

<!-- Changes used to convert the synchronization time period -->
<xsl:template match="metinf:AnchorUpdate/metinf:Last">
	<xsl:element name="Last" namespace="syncml:metinf" >
<xsl:value-of select="user2:computeTimestamp(string(.),number($vTimeOffset))"/>
	</xsl:element>
</xsl:template>
<xsl:template match="metinf:AnchorUpdate/metinf:Next">
	<xsl:element name="Next" namespace="syncml:metinf" >
<xsl:value-of select="user2:computeTimestamp(string(.),number($vTimeOffset))"/>
	</xsl:element>
</xsl:template>

Add the conversion function computeTimestamp to the <msxsl:script language='JScript' implements-prefix='user2'> section:

function computeTimestamp(strTimestamp, offset)
{
                var  tmp, n, tz;
if (strTimestamp.charAt(8) == 'T')
                               strTimestamp = strTimestamp.substr(0,8) + strTimestamp.substr(9);
                
                d1 = new Date(
                               parseInt(strTimestamp.substr(0,4),10),
                               parseInt(strTimestamp.substr(4,2),10),
                               parseInt(strTimestamp.substr(6,2),10),
                               parseInt(strTimestamp.substr(8,2),10) + parseInt(offset),
                               parseInt(strTimestamp.substr(10,2),10),
                               parseInt(strTimestamp.substr(12,2),10)
                );                               
                tmp=d1.getFullYear().toString()
                n=d1.getMonth();
                
                if (n<10)
                               tmp+="0";
                tmp+=d1.getMonth().toString();
                n=d1.getDate();
                if(n<10)
                               tmp+="0";
                tmp+=d1.getDate().toString()+"T";
                n=d1.getHours();
                if(n<10)
                               tmp+="0";
                tmp+=d1.getHours().toString();
                n=d1.getMinutes();
                if(n<10)
                               tmp+="0";
                tmp+=d1.getMinutes().toString();
                n=d1.getSeconds()
                if(n<10)
                               tmp+="0";
                tmp+=d1.getSeconds().toString();

                //strTimestampCorrected=tmp.substr(0,8) + "T" + tmp.substr(9);
                
                return tmp;
}