MPL (Mozilla Public License)


By: scauwe


New features and fixes
Download older versions



The Generic File Driver is similar to the Text Driver shipped with IDM, but has more options, and has the capability to read virtually any file type. Out of the box, the following file types are supported in both read and write: XML, CSV and XLS (the latter using POI from Apache), and in read-only (since version 1.1): images(png, jpeg, bmp,…) and raw files.

Main differentiators to NetIQ’s driver:

  • Produces and consumes regular NDS documents (no need for XSLT conversion).
  • Accepts add, modify or instance documents on the subscriber channel.
  • Auto-query back for missing attributes on modify commands.
  • GCV (Ecmascript) for generating associations and source DN’s.
  • Publisher channel processes files in a streaming mode. A maximum of 20 records are prefetched/buffered in memory (whenever support by the file type: CSV and XML).
  • Publisher channel supports interruption (driver stop command) during file processing.
  • Publisher channel can add metadata about the file or record processed (eg: record number, filename, last record indicator, etc).

The original version I wrote in 2007 is located at This update comes with an IDM 4 package making the installation simpler and has some new features and fixes (see below).

See the referenced version for a list of the initial features.


The attached zip file ( contains the installation documentation and all required runtime files.


All configuration options should have a good description. You can also find them back online.


New features and fixes

version 1.2, 11-DEC-2018 (package 0.9, sample config package 0.1)

  • Shim bug: Shim locked when an empty CSV file was published, and the driver was configured to use the schema from the CSV file (the shim waited for the schema forever).
  • Shim feature: Converted status to heartbeat events (to have the driverstorage updated).
  • Shim feature: Moving files now uses java 7 native move file method (and falls back to java 6 code when this fails). Note: shim is still compiled for older java 6 jre, but with java 7 source compatibility.

 version 1.1, 17-JAN-2018 (package 0.9, sample config package 0.1)

  • Shim feature: Added option to define sensitive attributes
  • Shim feature: Added ImageFileReader and RawFileReader
  • Shim feature: CSVFileWriter: added option to always surround fields with quotes.

version 1.0, 8-JAN-2017 (base package 0.8, Sample configuration 0.1)

  • Shim feature: provided an uncompressed jar, so that the shim can be discovered by the Windows remote loader. See forum post. Thanks AB!
  • Release bug: Version 0.9 release seemed to have failed to include some features/bug fixes. All 0.9 fixes and features should now actually be included.

version 0.9, 7-DEC-2015 (base package 0.8, Sample configuration 0.1)

  • Shim bug: in certain conditions, doing a retry in the publisher channel on the first record of a file, caused the file not to be reprocessed when restarting the driver.
  • Shim bug: forum issue with time limited subscriber files.
  • Package feature: split up of package into base and sample configuration.
  • Package feature: added Managed System Information Package as an optional package.
  • Shim feature – publisher – new option to generate a log file for the publisher channel: every status message received as a result of a record, is written to a log file. Base package includes new configuration parameters.
  • Shim feature – subscriber – added option to keep a local copy of the generated files.
  • Shim feature – subscriber – changed file closing when maxRecordsPerFile is defined. Previously, when maxRecordsPerFile was set to n, the file was closed just before writing the (n+1)th file. New implementation closes the file after writing the nth record.

version 0.8A, 3-MARCH-2015 (package 0.7)

  • Shim feature – general – reverted back to java 1.6 compatible ‘move file’ operation.

version 0.8, 14-SEPT-2014 (package 0.7)

  • Package bug: fixed typo in example xslt template for XML publisher files. See forum thread.
  • Technical – general refactoring of the shim.
  • Shim feature – publisher – added option to remove old publisher files. Disabled by default for backward compatibility.
  • Shim feature – publisher – added option to disable the publisher channel.
  • Shim feature – publisher – added additional options in the command to generate (“Dynamic Input based” and “Delete”)
  • Shim feature – subscriber – added option to disable the “max number of records in generated files” by setting it to 0 (zero).
  • Shim feature – subscriber – when a modify command is ’empty’ (=all fields defined in the schema are missing), but the content indicates that the output file should be closed (eg: the file close field is set to true), no query back is performed in order to add a record to the output file. It is assumed that the only purpose of this modify command is to close the output file.
  • Shim feature – general – added option to replace illegal ECMA script characters in field names (eg for calculating the association). Disabled by default for backward compatibility.
  • Shim feature – general – added option to include the driver’s ECMA script libraries into the shim (for complex ECMA script operation). Disabled by default for backward compatibility.

version 0.7b, 14-MAY-2014 (package 0.6)

  • Shim bug: case issue with the new configuration parameter to configure the command generated on the publisher channel

version 0.7, 07-MAY-2014 (package 0.6)

  • Shim bug: specifying no encoding on the XML reader caused an Exception (see also this cool solution post)
  • Shim feature: added option to configure the command generated on the publisher channel (add, modify or dynamic).
  • Package bug: xml and xls file readers had invalid class names (see the same cool solutions post)
  • Package feature: changed xls entry field to multi-line

version 0.6, 28-FEB-2014 (package 0.5)

  • Shim/package feature: Added configuration parameter to use Quartz scheduler to close subscriber generated files using a cron-like expression string.
  • Shim feature: Added slf4j binding (separate jar) for Idm tracing, allowing Quartz logs to be shown in idm trace files.
  • Shim bug: possible NPE when the publisher folder becomes unreachable (eg due to network outage).
  • Shim feature: Added option for every strategy to receive driver shutdown notification by implementing IShutdown.
  • Shim bug/feature: Return an empty instance document when we receive an associated query on the subscriber channel. Reason: support of the merge attribute filter rules in case of a ‘sync’ event.

version 0.5, 21-JAN-2013 (package 0.4)

  • Shim bug: Fixed an issue wrt the driver not adding the metadata on the publisher channel.

version 0.4, 24-APR-2012 (package 0.4)

  • Shim bug: Fixed an issue with the driver schema (appeared to be hard coded).
  • Shim feature: Added beta support for query back. Query back only supported on publisher channel (when reading in a file). Feedback welcome.
  • Package bug: Fixed an issue that caused the driver configuration not to be imported when the package was imported.
  • Package bug: Changed creation policy from validating the Given Name to validating the Surname.
  • Package feature: Added package ‘Delimited Text Driver Password Synchronization Package’ as an optional package for this driver.
  • Package feature: Added remote loader prompts to the package.

version 0.3, 12-OCT-2011

  • Shim feature: automatic association and src-dn calculation (using ecmascript in the driver configuration). No longer need for style sheets for just creating association and src-dn values. The driver shim now does this for you.
  • Shim bug: fixed missing remove-all-values on the publisher documents.
  • Shim feature: added the ability (csv output files) to flush the file buffer after every record written (useful for when you are developing/testing your driver).
  • Shim feature: when receiving a modify event on the subscriber channel, the shim will query back for all missing attribute values in order to be able to write a complete record (no need for a stylesheet to query for missing attributes and keeping this stylesheet in sync with the schema).
  • Shim bug/feature: the subscriber channel now fully support add, modify and instance events. Instance and add events are assumed to contain all data and do not perform a query back. Only the modify event performs a query back

Download older version

The latest version can be downloaded on the top of this page. If you are looking for an older version, the following versions are still available for download here:

5 votes, average: 5.00 out of 55 votes, average: 5.00 out of 55 votes, average: 5.00 out of 55 votes, average: 5.00 out of 55 votes, average: 5.00 out of 5 (5 votes, average: 5.00 out of 5)
You need to be a registered member to rate this post.

Disclaimer: As with everything else at NetIQ Cool Solutions, this content is definitely not supported by NetIQ, so Customer Support will not be able to help you if it has any adverse effect on your environment.  It just worked for at least one person, and perhaps it will be useful for you too.  Be sure to test in a non-production environment.

Leave a Reply


  • joakim_ganse says:


    The wizard did not create the driver config properly for me.
    Had to copy and paste one from your previous version.

  • al_b says:

    Could you advice please, how I can receive access to file metadata?

    I added in Publisher option elements of metadata:

    <definition display-name=”List of meta data elements that should be added:” name=”pub_metaData” type=”string”>
    <description>Publisher: List of meta data elements that should be added(recordNumber,isLastRecord,filePath,fileName,fileSize). The schema as given in the driver parameter ‘schema’ will be extended with all meta data elements listed. Separate each item with a comma.</description>
    <value xml:space=”preserve”>recordNumber,isLastRecord,fileName,fileSize</value>

    but I can’t see in a trace, that any of this elements available for me. 🙁
    I found ugly way to get access to recordNumber information via init-params, but I believe, that you foreseen more elegant and simple way.

    00:06:03 914 Drvrs: </add>
    <publisher-state filePath=”c:\work\2013.01.20_00.06.03\dts.csv” fileReader=”info.vancauwenberge.filedriver.filereader.csv.CSVFileReader” recordNumber=”1″/>

    I tried to use version 0.4 (GenFileDriverShim_0.4.jar, SVCGENFILEB_0.0.4.jar), and may be some bug (or misunderstanding) prevent me from see this info.

    Thank you for your help,

  • joakim_ganse says:


    This is a truly brilliant driver 🙂 Starting to replace all text drivers with this one.
    One thing I have noticed is that when using it with a Remote Loader on Winows I can not brows for the class.
    What I did was to choose a diffrent class and then edit the txt file.
    This is not enough though, I got a java Lang error.
    So I discovered I had to edit the registry as well, and pase in the classname there to.
    After that I could edit the config the normal way, had to put in the passwords again.

    The classname is info.vancauwenberge.filedriver.shim.driver.GenericFileDriverShim


  • mJg2XW says:


    Greate driver:)

    Do the driver have some sort of PostProcessor funktion on the Publisher?

  • joer999 says:

    Exactly what I needed: a text driver which can produce CSV’s with a header. Also neat is the feature of the Work & Destination directory.
    Great work.

  • mJg2XW says:


    Sorry for my delay.

    I would like to send a XDS document to a diffrent driver or bumping up a “counter” on a specific object or just to do /generate some sort of events that signal that the .CSV driver i finish, so other driveres begin doing some work.

    • scauwe says:

      Hi Michael,
      You can have metadata in the driver to notify you when it is the last record of the file. You can always, in the command transformation on the publisher, react on this and do whatever you want after the last record (eg: increase a counter somewhere, create another object (workorder?),… so that another driver is triggered).

  • mJg2XW says:


    Thanks for your replay, I will give it a try.


  • aarondickinson says:


    I was just wondering if there was any tricks to getting the Gen File driver connected to a Remote Loader?

    I’ve coppied the appropriate .jar across and (manually) edited the instance config to use the correct class but I keep getting this fatal error:

    Unable to validate that there is a non-empty driver object password (a Publisher-channel Policy may be incorrect)

    And before I start to diagnose the stylesheets (I believe that is there the issue might be), I was just wondering if there was anything else I should keep in mind as I didn’t see anything about connecting to an RL.

    Thanks in advance,


    • scauwe says:

      Hi Aaron,

      I run it in a remote loader all the time, both on Linux and on Windows, and never had any issues. For windows, it might be more tricky (see joakims comments in
      What style sheet are you referring to?


      • aarondickinson says:

        Oh Great. I missed that reply.
        I noticed the same issue with the drop down myself, but didn’t catch the java error as a 3rd party is running the RL.
        Will pass this info on.

        The StyleSheet I’m referring to is probably my Pub Pre-Processor XSLT.
        I see that when the driver requests the driver obj password from the RL, it gets a response (so the query is being processed by the sub XSLTs), but then the pre-processor converts the query response into an add event… :/
        The XSLT was made by a contractor so I may just have to add in a template for queries.

      • scauwe says:

        No problem.
        Note that the ‘standard’ xslt (the one used with NetIQ’s file driver) is no longer needed when using this shim. You get plain xds documents from the shim.

  • pcook says:

    I’m unable to get this driver to start on a brand-new, fully patched eDir 8.8.8/IDM 4.0.2 server. I get a fatal error upon attempting to start the driver:

    java.lang.IllegalArgumentException: No enum constant info.vancauwenberge.filedriver.shim.FileDriverPublicationShim.GenerateCommnd.add

    I’ve tried all the other “generate command” options (modify,dynamic) with the same result. What could be causing this?

  • SchoellU says:

    I’m unable to get the Driver (v0.8 and earlier) to start on a 4.0.2 IDM-Server. Is fully patched eDir 8.8.8/IDM 4.0.2. Did receive a fatal error upon attempting to start the driver:
    Code(-9010) An exception occurred: java.lang.NoSuchMethodError:;
    at info.vancauwenberge.filedriver.util.Util.moveFile(

    Code(-9203) Error saving driver persistent data: Code(-9010) An exception occurred: modifyEntry: -608

    Any idea?

  • SchoellU says:

    additional Information:
    the error occures during the following activity:
    Moving file from /var/opt/novell/…/jobinfo.csv to /var/opt/novell/…/work/jobinfo.csv

    Thanks in advance

    • scauwe says:

      Hi Uwe,

      Since version 0.8 of the driver, I changed the method of moving files. I switched from the java File.rename() to Files.move()
      Files.move requires a Path argument. It now seems that File.toPath() is introduced in java 1.7. IDM ships with java 1.6.
      The part that confuses me is: how comes it works on my systems… It should not.
      I’ll try to publish a patched 0.8 version ASAP that does not use File.toPath().


      • SchoellU says:

        Hi Stefaan,
        thanks for answer
        Now i am confused too, we had also tested with version 0.5 and Java 1.6 with the same result…

  • kellywm1 says:

    Is there a patched version that fixes the Files.move() issue yet?

    An exception occurred: java.lang.NoSuchMethodError:;

    Occurs when driver is trying to move input csv file from IN to WIP directory. Java version on server is ;

    java version “1.6.0_21”
    Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
    Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)

    I cannot update the server to java 1.7 or later, other java apps used by other teams require the 1.6.0_21 specific version.


  • joer999 says:

    Great enhancement over the standard text driver, thanks.

  • allenmorris says:


    Been playing with the 8A version of the Generic Text driver in development the last couple of days. It’s working quite nicely, except for one little glitch.

    It will not write the output file unless I restart the driver.

    I’ve tried different Subscriber Channel combinations of the “Max Number”, “Max Age”, and “Close after” variables to no avail. I haven’t tried the “Cron” string option yet. They are currently set as;




    I do see in the WIP location the output file with Zero bites. In the log file I can see the “heartbeat” triggering every 60 seconds. The Publisher Channel is disabled.

    Appreciate any suggestions on where to look from here?

    All the best.


    • scauwe says:


      thanks for your feedback and helping me fixing this bug in the Generic File Driver shim. Fixed in release 0.9.


      • rcano says:

        Hi Stefaan,

        I’m having the same problem like Allen.

        I configured the Subscriber options as follows:

        Max records: 100
        Max age: 0
        Max inactivity sec: 60

        also tried:

        Max records: 100
        Max age: 60
        Max inactivity sec: 0

        But when the records are below 100, the file remains opened until a new event arrive, even the time of max age or max inactivity seconds was elapsed.

        I’m using the last version of your driver, 0.9.

        Any clue about if I’m doing something wrong?

        Thanks in advance,

  • scauwe says:

    Issue found: cuase is an issue in the 0.9 release procedure.
    1.0 RC1 tested. Will be fixed in upcoming release 1.0

  • mjuricek says:

    I am not able to import packages to my project because I am not able to accept license in Designer 4.6. Do I need to use any trick?

  • nvldk says:


    We are using this driver for our requirement. Our requirement is to generated the output xml file when the user is added/modified/deleted in eDirectory.

    Attributes in fields: Firstname, SN, initials, workforcedi, cn, mail

    We were able to get the output files generated for the above events. But we have an issue, where the for modifying an attribute (Ex: Firstname), we get all the attributes in the output file.

    How do we stop/remove the un-modified attributes from the driver.


    • scauwe says:

      Hi dk,

      I see two options (but I did not test any of them):
      * Instance and add events are assumed to contain all data and do not perform a query back. Only the modify event performs a query back. So, transforming your modify events to add events (eg in the output transformation) will prevent the query back.
      * Alternatively, you can intercept the query back on the publisher channel (and eg veto it). Make sure to check the class-name before vetoing.


  • Sjoerdk says:


    I’m trying to add double quotes to the exported CSV field values, but when adding quotes, the shim also automatically adds quotes as well.

    A default ;-delimited export is:

    My wanted export is:

    When manually adding quotes to field values, the CSV looks like

    Any idea to fix this ? Is there a driver option to add those double quotes by default that I’m missing ? Is there an escape character for manually added quotes ?

    Thanks !

  • lelle says:

    Thanks for a great product!
    I have a customer case where we need different files from subscriber channel depending on event that trigger the driver(add, modify or delete). Is it possible to from one driver create 2 or more filnames?
    Like add.cfg, modify.cfg, delete.cfg etc

    Best regards

    • scauwe says:

      Hi Lennart,

      Only one file can be written to at a time. You can always:
      * write each record/event in a new file. This might create a lot of small files.
      * create two drivers, one for each file. This might require additional policies to manage your associations.


      • carmelo says:

        After installing Genfiledriver1.1 on IDM4.7.1.1, edir on Rh7.5 utf-8 The following error occurs in iManager if another tab is being selected than the default “Driver configuration”.

        Unable to save driver configuration data from http request. Close
        Error The following error occurred: An exception occurred processing the XML ( ”: (17): character not allowed

        PropertyBook…….1582 The following error occurred: An exception occurred processing the XML ( ”: (17): character not allowed
                    &n>bsp;           ).”

  • stefaanv says:

    Hi carmelo,

    I just installed it on an IDM without a problem.
    My iManager version is 3.1.0
    My IDM plugin version is 10.7.20180219

    I installed the packages via Designer without altering the config, deployed and can select any tab I want in iManager.

    Can you check the iManager and IDM plugin version you have?
    Can you install an unmodified configuration of the IDM packages and see if that works?


    • carmelo says:

      Hi Stefaan,

      My iManager is
      All IDM plugins: also 10.7.20180219.1

      Created a new empty driver in designer and deployed it with the same error.
      Also noticed that changes made in “Driver configuration” are not being saved with the same error.

      I will test another and fresh iManager.



      • carmelo says:


        I reinstalled (not upgraded): iManager 3.1.2 with java en tomcat on a redhat server with the same results.
        Strange thing is that it does not occur on a workstation version 3.1 and 3.1.2



      • stefaanv says:

        Hi Carmelo,

        I’m now on Designer 4.7.1, iManager 3.1.0 and same IDM plugin version.
        Designer running on Windows 10; iManager & IDM running on SLES.
        I deployed the packages (base+sample config). I can select any tab in iManager without any error.


      • stefaanv says:

        It seems an issue with iManager 3.1.2 on Linux.
        iManager 3.1.0 has no problem.
        Cause: iManager no longer seems able to handle certain values in the driver config.

        Via Designer, delete the xslt in the publisher and subscriber options for XML reader/write(assuming you are not using them).
        1. Driver Parameters > Subscriber options > Subscriber: File Write Strategy: switch the XML and delete the value of “xslt to apply”. Switch back to CSV (assuming it is CSV you want to write)
        2. Driver Parameters > Publisher options > File Reader Strategy: switch to XML and delete the value of “pre-xslt”. Switch back to CSV (assuming it is CSV you want to read).
        Apply, save and deploy.

        Note: the following data in the xslt produces issues:
        While the following works

        (the p replaced by a 1).

      • stefaanv says:

        XML formatted data was removed from my previous reply. Other try:
        Following produces the error:
        While the following works:

  • gdrtx says:

    I know I must be missing something simple but I am unable to create this driver in Designer. I downloaded the 1.2 zip file from here, extracted the contents, and imported the base package jar files into my Desinger project. However, when I attempt to create a new driver and select the Generic File Base (version I cannot get past the optional features selection in my Designer 4.6. I have tried with nothing selected, everything selected, and pretty much every combination of selections available from the 3 optional feature packages available. They all result in an error stating “The requestion operation for the package ‘Generic File Base’ cannot be completed due to the following package dependencies” and it is shows a package named “Common Settings”. Upon closing that prompt I get a followup message “The dependencies of the following base package could not be resolved: – Generic File Base”. Is this package not compatible with Designer 4.6? Am I missing something Java related on my machine? What am I missing? This driver sounds perfect for my needs but I can’t seem to make it work and would appreciate any feedback on where I went wrong.

    • stefaanv says:


      The package ‘Common Settings’ is a standard NetIQ package. It should be in every Designer installation. Can you validate that you have this?

      • gdrtx says:

        It is. This is what happens after a long day and then trying something new. I had imported the project from someone else’s export and the package was missing from my driver set. After thinking about it for a minute I realized what the issue was and after adding the missing package to my driver set was able to successfully create the driver using the instructions provided. Thanks for the reply as it would have been helpful had I not realized my own mistake.

  • descent says:

    Hello Stefaan!
    We’ve started using this for image imports and it works great!
    We next tried to use this with XLS files to make it easier for admin staff to deal with the files but we’ve run up against what appears to be either a bug or a version conflict with POI. When we drop the file we get:
    Message: Code(-9010) An exception occurred: java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFRow.getCell(S)Lorg/apache/poi/hssf/usermodel/HSSFCell;
    at info.vancauwenberge.filedriver.filereader.xls.XlsFileReader.readRecord(
    at info.vancauwenberge.filedriver.filepublisher.FileDriverPublicationShimImpl.processFile(
    at info.vancauwenberge.filedriver.filepublisher.FileDriverPublicationShimImpl.poll(
    at info.vancauwenberge.filedriver.filepublisher.FileDriverPublicationShimImpl.start(
    at info.vancauwenberge.filedriver.shim.FileDriverPublicationShim.start(

    Looking at the source, it looks like the call to getCell is on the HSSFCell object and that doesn’t have the method. We were trying this with the 4.0.1 POI on IDM 4.7.1. Is there a particular version of the POI this was built against? Perhaps this is a version conflict with another jar file?
    Thank you in advance for an amazing piece of code!

    • stefaanv says:

      Hi Will,

      Indeed. This was initially coded in 2006 and never upgraded. From the feedback I got till now, this feature (XLS read/write) is not used frequently. For this reason, I included the following comments in the documentation “Note: this was not (re)tested recently. The original development and POI jar was way back around 2006. If you have any experience with the XLSFileWriter, please let me know.”


By: stefaanv
Jan 31, 2013
5:33 am
Active Directory Authentication Automation Cloud Computing Cloud Security Configuration Customizing Data Breach DirXML Drivers End User Management Identity Manager Importing-Exporting / ICE/ LDIF Intelligent Workload Management IT Security Knowledge Depot LDAP Monitoring Open Enterprise Server Passwords Reporting Secure Access Supported Troubleshooting Workflow