Hello!

IDM 2.0.2 in installed on NetWare 6.5 SP4 OES server with AD driver.
The AD site is using Remote Loader on Win2003Srv.

The installation is fresh, just installed.

When starting AD driver the result is "Unable to start".

Level 3 trace shows the following error:
madutil:translateFileTime2Epoch' not found

Here is more complete L3 trace log:

Wednesday, Feb 15, 2006
00:24:00 891502E0 Drvrs: DirXML Driver
<\Corp\Corp\Site\DirXML\IDMdrivers\ADdomain> requesting password.
00:24:00 891502E0 Drvrs: ADdomain ST:
DirXML Log Event -------------------
Driver: \Corp\Corp\Site\DirXML\IDMdrivers\ADdomain
Channel: Subscriber
Status: Error
Message: Code(-9061) Error processing XSLT policy:
vnd.nds.stream://Corp/Corp/Site/DirXML/IDMdrivers/ADdomain/Input
Transform SS#XmlData (21): <xsl:variable>: 'select' expression error:
function 'madutil:translateFileTime2Epoch' not found
00:24:00 891502E0 Drvrs: ADdomain ST:
DirXML Log Event -------------------
Driver: \Corp\Corp\Site\DirXML\IDMdrivers\ADdomain
Channel: Subscriber
Status: Error
Message: Code(-9014) One or more errors occurred parsing an XSLT
stylesheet:


Any idea what could cause this?

In the end of this message is a copy of the policy (unedited, imported
from activedirectory.xml)

BR, Harri


*** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Untouched policy, imported from ActiveDirectory.xml:
*** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet
exclude-result-prefixes="query cmd dncv exsl madutil" version="1.0"
xmlns:cmd="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.
XdsCommandProcessor"
xmlns:dncv="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver
..DNConverter" xmlns:exsl="http://exslt.org/common"
xmlns:madutil="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.dri
ver.ad.util.Utilities"
xmlns:query="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.drive
r.XdsQueryProcessor" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- List of attributes where the filetime conversion policy is to be
applied. -->
<!-- With this policy, AD attributes using the Interval syntax (a 64
bit -->
<!-- integer representing time since jan 1, 1601) are converted to the
eDir -->
<!-- Time syntax (a 32 bit integer representing time since Jan 1,
1970). -->
<xsl:variable name="filetime-policy-attributes">
<attr-name>accountExpires</attr-name>
<attr-name>lockoutTime</attr-name>
</xsl:variable>
<!-- filetime policy attributes as a node set -->
<xsl:variable name="filetime-policy-list"
select="exsl:node-set($filetime-policy-attributes)/attr-name/text()"/>
<!-- apply text conversion policies -->
<xsl:template match="value">
<!-- for a value, the attribute name is either on the parent or the
parent's parent -->
<xsl:variable name="attrname"
select="concat(string(../@attr-name),string(../../@attr-name))"/>
<xsl:choose>
<!-- apply filetime conversion policy -->
<xsl:when test="$attrname = $filetime-policy-list">
<xsl:comment>AD Interval to eDir Time translation
policy</xsl:comment>
<!-- java callout performs conversion -->
<xsl:variable name="epoch"
select="madutil:translateFileTime2Epoch(text())"/>
<xsl:if test="$epoch">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:value-of select="$epoch"/>
</xsl:copy>
</xsl:if>
</xsl:when>
<!-- apply userPrincipalName conversion policy -->
<xsl:when test="$attrname = 'userPrincipalName'">
<xsl:comment>userPrincipalName conversion policy</xsl:comment>
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:choose>
<xsl:when test="contains(., '@')">
<xsl:value-of select="substring-before(., '@')"/>
</xsl:when>
<xsltherwise>
<xsl:value-of select="."/>
</xsltherwise>
</xsl:choose>
</xsl:copy>
</xsl:when>
<xsltherwise>
<!-- copy all values without a policy through -->
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsltherwise>
</xsl:choose>
</xsl:template>
<!-- identity transformation template -->
<!-- in the absence of any other templates this will cause -->
<!-- the stylesheet to copy the input through unchanged to the output
-->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

Wednesday, Feb 15, 2006
00:24:00 891502E0 Drvrs: DirXML Driver
<\Corp\Corp\Site\DirXML\IDMdrivers\ADdomain> requesting password.
00:24:00 891502E0 Drvrs: ADdomain ST:
DirXML Log Event -------------------
Driver: \Corp\Corp\Site\DirXML\IDMdrivers\ADdomain
Channel: Subscriber
Status: Error
Message: Code(-9061) Error processing XSLT policy:
vnd.nds.stream://Corp/Corp/Site/DirXML/IDMdrivers/ADdomain/Input
Transform SS#XmlData (21): <xsl:variable>: 'select' expression error:
function 'madutil:translateFileTime2Epoch' not found
00:24:00 891502E0 Drvrs: ADdomain ST:
DirXML Log Event -------------------
Driver: \Corp\Corp\Site\DirXML\IDMdrivers\ADdomain
Channel: Subscriber
Status: Error
Message: Code(-9014) One or more errors occurred parsing an XSLT
stylesheet:


The policy is untouched and it is imported from ActiveDirectory.xml.

<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet
exclude-result-prefixes="query cmd dncv exsl madutil" version="1.0"
xmlns:cmd="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.
XdsCommandProcessor"
xmlns:dncv="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver
..DNConverter" xmlns:exsl="http://exslt.org/common"
xmlns:madutil="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.dri
ver.ad.util.Utilities"
xmlns:query="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.drive
r.XdsQueryProcessor" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- List of attributes where the filetime conversion policy is to be
applied. -->
<!-- With this policy, AD attributes using the Interval syntax (a 64
bit -->
<!-- integer representing time since jan 1, 1601) are converted to the
eDir -->
<!-- Time syntax (a 32 bit integer representing time since Jan 1,
1970). -->
<xsl:variable name="filetime-policy-attributes">
<attr-name>accountExpires</attr-name>
<attr-name>lockoutTime</attr-name>
</xsl:variable>
<!-- filetime policy attributes as a node set -->
<xsl:variable name="filetime-policy-list"
select="exsl:node-set($filetime-policy-attributes)/attr-name/text()"/>
<!-- apply text conversion policies -->
<xsl:template match="value">
<!-- for a value, the attribute name is either on the parent or the
parent's parent -->
<xsl:variable name="attrname"
select="concat(string(../@attr-name),string(../../@attr-name))"/>
<xsl:choose>
<!-- apply filetime conversion policy -->
<xsl:when test="$attrname = $filetime-policy-list">
<xsl:comment>AD Interval to eDir Time translation
policy</xsl:comment>
<!-- java callout performs conversion -->
<xsl:variable name="epoch"
select="madutil:translateFileTime2Epoch(text())"/>
<xsl:if test="$epoch">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:value-of select="$epoch"/>
</xsl:copy>
</xsl:if>
</xsl:when>
<!-- apply userPrincipalName conversion policy -->
<xsl:when test="$attrname = 'userPrincipalName'">
<xsl:comment>userPrincipalName conversion policy</xsl:comment>
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:choose>
<xsl:when test="contains(., '@')">
<xsl:value-of select="substring-before(., '@')"/>
</xsl:when>
<xsltherwise>
<xsl:value-of select="."/>
</xsltherwise>
</xsl:choose>
</xsl:copy>
</xsl:when>
<xsltherwise>
<!-- copy all values without a policy through -->
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsltherwise>
</xsl:choose>
</xsl:template>
<!-- identity transformation template -->
<!-- in the absence of any other templates this will cause -->
<!-- the stylesheet to copy the input through unchanged to the output
-->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>