Workaround for Subscriber Reset Bug
Novell Cool Solutions: Tip
Digg This -
Posted: 11 Nov 2004
Workaround for Bug in Subscriber Reset Feature
A Cool Solutions reader wrote the following:
I have the JDBC driver (Oracle 8i) with IDM2.0.1. I have employeeStatus mapped to a field in a view. The attribute is in the filter with the subscriber "reset" feature turned on, with the view having the authority of the attribute/field.
When employeeStatus is changed in EDirectory, I see the change going through the subscriber channel fine, and at the end, an XDS document is submitted to the publisher channel for the attribute value to be restored.
I have rules that detect attribute changes in the XDS document - for example, one of them checks for employeeStatus changes. This condition is met and the rule is activated. In this rule, I make a call to pull a value of a field in the view (source attribute ... remember, this is an XDS document in the publisher channel). When the JDBC driver initiates the query to extract the value from the table, I get a "Query unsupported. Unable to query schema with 'entry' scope" error and the source value is not returned. This only happens on merge and "reset" attribute functions.
... and a Forum expert contributed the following solution:
This is a bug of sorts. When a Modify comes to the publisher command transformation as a result of a merge (Reset being a special case of merge), then it is missing the src-dn and association value. This makes it difficult to query back to the source object. There are a couple of ways to work around this until the bug is fixed. You could query the edirectory object to get the association value and use that to query back to Oracle, as in the example below.
<?xml version="1.0" encoding="UTF-8"?> <policy xmlns:query="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsQueryProcessor"> <rule> <description>Get merge association</description> <conditions> <and> <if-xpath op="true">@from-merge='true'</if-xpath> <if-association op="not-available"/> </and> </conditions> <actions> <do-set-op-association> <arg-association> <token-xpath expression='query:readObject($destQueryProcessor, "", @dest-dn, @class-name, "")/association'/> </arg-association> </do-set-op-association> </actions> </rule> </policy>