Release Notes for JRButils for Micro Focus v26

Changes to Individual Programs


  • Modified to report the server on which new objects are created.
  • Added /v=d as a debugging option for replication issues. This causes creatobj to list all attributes set, and the server to which the request was sent, when reporting success or failure.
  • Fixed a long standing issue where it could incorrectly report insufficient rights to add a member to a group, when the group existed in a different partition and was not replicated onto the server on which the user had been created. The real problem was insufficient time lapsed for replication to complete.
  • Modified to check a template ahead of user creation for a home directory path when no path is given via /d. This allows the user to be created on the appropriate server so that replication does not need to occur to grant rights to the home directory path.
  • Modified to add an ACL for [Root] when creating a dynamic group.
  • Modified to set a password, if specified, for a dynamic group.


  • Added the ability to transfer IRFs to an NTFS drive. See under netcopy for more details.
  • Updated so that a file of name translations given via /x can also be used when copying from one domain to another. In this case the names must be samAccountNames.


  • Modified to support the “dynamic group” bit when displaying ACLs for dynamic groups.
  • Added /b=h to display raw attribute values in hexadecimal format. This may be useful to see what is actually present in the value, rather than the interpretted values normally displayed by getname. For boolean attributes where the absence of a value is usually treated as “true”, this setting will show whether values are actually present.
  • Fixed an issue in the GUI versions where it was always displaying the object name in distinguished form when displaying all attributes for an object.
  • Fixed an issue in the command line versions where pseudo attribute name “emailAlias” was no longer accepted.
  • Fixed an issue where the value count was incorrect when using /# for pseudo attributes otherNames and emailAlias.
  • Added /i providing a means to write the raw data from octet string and stream attributes to files, so that they can be imported into other object attributes via setname.
  • Added radio buttons to the window for browsing to select an object in eDirectory in the GUI versions, to indicate whether to process the selected container object, or objects in the container.


  • Enhanced /v which displays all volume quotas on a volume, to allow displaying all quotas, quotas for valid objects, or quotas for deleted objects. It appears that on OES Linux, volume quotas are not automatically removed when a user is deleted.
  • Fixed a potential stack overflow issue when recursing a deep directory structure to sum the usage when no directory quota is present.


  • Added the ability to display the creator and modifier for each group.
  • Added the ability to display the type (static, dynamic or both) for each group.
  • Modified so that fields for primary and secondary sorting are selected from a drop down list instead of radio buttons.
  • Added the ability to exclude selected members, as per grplist, when listing group memberships.
  • Incorporated the functionality of usergrps so that the groups program can now be used to list the groups to which objects’ belong.
  • Added command line option /a=m to allow preselecting the option to list groups belonged to.


  • Modified /c to allow creation of a dynamic group via /c=d.


  • Replaced /m which provided an alternative output format with a new option allowing selection of a range of output fields to display.
  • Replaced /n which previously allowed displaying member names only (i.e. the full name was suppressed) with a new option allowing the fields displayed via /m to be output in delimited form using a selected delimiter, and optionally enclosed in double quotes. Member names only can now be displayed via /m.
  • Replaced /d which displays member aliases with an output option under /m.
  • Replaced the probably redundant option /i (prefix the member name with a server name which is a hangover from the days of NetWare 3) with an output option under /m.
  • Added new output fields for displaying each group’s creator and modifier.
  • Added a new /i to allow the display of group information without retrieving the members.


  • Fixed an issue where it failed to accept [Root] as a member name.


  • Fixed an issue in the GUI versions where right clicking in the mailbox expiration date and time column did not bring up the dialog to modify the value.

Gwgroups and gwusers

  • Added support for retrieving proxies granted and proxies used via REST under GroupWise 18. This is much faster than via SOAP which is required under GroupWise 2014. Note that retrieving these fields via REST does not return a GUID, only a display name (first name plus last name) which is not a unique identifier, and more difficult to reliably convert to an object name. At this point the display name is output. Note also that it is not possible to retrieve proxies held. When a proxy is added, the recipient of the proxy rights is not updated until such time as the proxy is exercised.
  • Fixed an issue where the proxies used could be displayed as guids rather than as object names when retrieved via SOAP.
  • Changed the field for proxies used from ‘pd’ to ‘pu’, to reflect the change in labelling from ‘proxied to’ to ‘proxies used’.
  • Changed the field for city from ‘cy’ to ‘ci’ so that ‘cw’ and ‘cy‘ can be used for ‘calendars shared with me’ and ‘calendars shared by me’ respectively. This is consistent with the use of ‘fw’ and ‘fy’ for folders shared with and by me.
  • Changed the field for folders shared which was available via SOAP under GroupWise 2012 and earlier, from ‘sh’ to ‘fy’ which represents ‘folders shared by me’. The field ‘folders shared with me’ is represented by ‘fw’.
  • Added the ability to display address books shared by each user and with each user under GroupWise 18, represented by fields ‘ay’ and ‘aw’ respectively.
  • Added the ability to display calendars shared by each user and with each user under GroupWise 18, via ‘cy’ and ‘cw’ respectively.
  • Added the ability to display folders shared by each user and with each user under GroupWise 18, via fields ‘fy’ and ‘fw’ respectively.
  • Updated to retrieve the number of rules and if all incoming email is forwarded, via REST instead of SOAP under GroupWise 18. Using REST is not only more efficient but also allows the information to be retrieved for disabled and expired accounts.
  • Added the ability to display all rules via field ‘rr’ under GroupWise 18. These are retrieved via REST.
  • Added the ability to display a vacation rule as a separate field via ‘vr’ under GroupWise 18.
  • Updated to display the last client version which had been available for 2012 and earlier, but not 2014 onwards.
  • Added the ability to display the last client language which had been available under 2012 and earlier, but not under 2014.
  • Added the ability to display the following mailbox statistics under GroupWise 18:
    Total appointments
    Total drafts
    Total emails
    Total inbox messages
    Total notes
    Total outbox messages
    Total personal items
    Total phone messages
    Total to-do items
    Total unread messages
  • Fixed an issue where the GUI versions were not displaying the last client type under GroupWise 2014 onwards.
  • Added the ability to set gateway aliases.
  • Modified the GUI versions to, by default, retrieve only the fields selected for display. The growing number of fields available has noticeably slowed retrieval of all fields as numerous REST requests are required.
  • Fixed an issue where the command line versions could quit when an invalid field was given for /v.
  • Modified to ensure the main window is at the front after displaying the dialog boxes to retrieve the address for the Admin Console, or the username and password for logging in.
  • Fixed an issue in the GUI versions where, if an invalid path was given for the Admin Console, under some circumstances, they failed to connect when a correct path was subsequently given.
  • Updated the GUI versions to display a “busy” cursor when trying to connect to GroupWise. Connecting is normally very fast, but a delay of 10 or more seconds can occur for an incorrect address.
  • Updated to correctly handle setting “internet domain name” for external domains which use a different data structure from a primary or secondary domain. A value for this field is also optional. An existing value may be removed using in=none.
  • Changed all right-click dialog boxes to be resizeable in the GUI versions. This makes it easier to read longer error messages when a change fails.


  • Fixed an issue when adding or modifying a proxy via ‘px’ where it reported an invalid field name when a field without a value, which clears the entry, was used in the middle of the list e.g. px=bob.mypo.mydom,mail:r,notes,tasks:r
  • Modified the displayName used when adding a proxy to equal the given name plus last name. Previously the object name had been used. When retrieving proxy information via REST under GroupWise 18, the displayName is the only identifying information returned for each proxy entry, whereas the corresponding information retrieved via SOAP includes the GUID which uniquely identifies the user.
  • Modified so that when GroupWise is initialised at startup, the GroupWise system name is displayed in the “Name” edit box.


  • Separated /i (suppress field names and produce delimited output) into /i and /q so that a line of field names can be displayed for delimited output.


  • Added /o to overwrite files flagged read-only when copying into home directories. A message to use /o, as per fsupdate, could be reported.
  • Added substitution identifiers %date%, %datetime% and %time% for constructing fixed values. These allow placing the current date and/or time into new attribute values.
  • Added control statement “Delete volume quotas” to remove volume quotas from the volumes holding the primary and secondary home directories when deleting users. On OES Linux, volume quotas are not automatically removed when an object is deleted.


  • Fixed an issue displaying server rights where more than one value can be returned e.g. superviser and console. It had long been assumed only one value was returned.
  • Added output column headings to the command line versions. Some default column widths were adjusted to accommodate the headings.
  • Added the ability to display the login date and time as a single value via /f=j.


  • Fixed an issue where after reporting an event monitoring error such as monitoring being disabled in iManager, it could produce a segmentation fault rather than exit cleanly.


  • Fixed an issue where it successfully authenticated to another tree, but nothing showed to this effect when clicking on “OES Connections..” in the OES client system tray program. The connection to the target server was not being retained.


  • Fixed a long-standing issue where trustees were not copied when using /u and /t, and the file did not need copying.
  • Modified the way a SID is obtained from Windows hosts when copying trustees from NSS to Windows to make the lookup more reliable with complex DFS links.
  • Added the ability to transfer IRFs to an NTFS drive. There is no direct equivilent on NTFS where full inheritance is either enabled or disabled. There is no facility for selective blocking. The following steps are taken:
    • Inheritance is blocked for the corresponding Windows directory.
    • All inherited ACEs for the directory are converted to explicit (non-inherited) ACEs so existing Windows permissions will flow as before inheritance was blocked.
    • For all NSS trustees granted rights to directories above the IRF, the effective rights are calculated below the IRF, and an ACE is added to the Windows directory granting matching permissions. If the effective rights are zero, any ACEs for the corresponding Windows object are removed.
    IRFs are transferred to NTFS only when /t is used, and copying of IRFs has not been suppressed via /n=i.
  • Updated the code for locating a matching Windows object when transferring rights and ownership to a Windows host. If an object with a samAccountName matching the eDirectory CN is not found, and the host on which netcopy is running is logged into a domain, and the target host is in the same domain, then netcopy searches AD for an object with a matching CN. If there is exactly one match, and that object is a user or group, then the rights or ownership are assigned to that object.
  • Fixed an issue when transferring rights or ownership to a Windows host where it might not find a matching object when the name included extended characters.


  • Updated so that when displaying all quotas on a volume, it is possible to display quotas for valid users only, deleted users only, or all quota entries. On OES Linux, quota entries are not automatically removed when a user is deleted.
  • Fixed an issue when setting a directory quota via right click after displaying quotas. The free space was not automatically updated when the directory did not previously have a quota.
  • Modified the quota edit dialog so it can be resized to better display long names or paths, or long error messages.


  • Corrected a long standing issue when a path included a single file name without wild cards, salvageable files matching that name were not listed unless an undeleted file of that name existed in the target path.
  • Updated /f, so that in addition to accepting a comma separated list of file names to search for, it now also accepts the name of an input file, containing one file name per line e.g. /f=@c:filenames.txt.
  • Corrected an issue where names given via /f containing extended characters were not located.
  • Added /i to report in the error log when no matching files are found in a directory. This applies to both files named as part of <entity> and via /f.
  • Fixed an issue where it would not salvage copies of ._NETWARE\.trustee_database_backup.xml due to an incorrect NCP error code being returned when attempting to recover this file with the same name. It is now treated as a special case.


  • Modified to support the "dynamic group" bit when setting or displaying ACLs for dynamic groups.


  • Modified so that it should now correctly verify pseudo attributes added as schema extensions e.g. DirXML-AccessRun, without them being hard coded.


  • Added /u to allow inserting or removing substrings from existing text values, including fax and telephone numbers which use their own syntaxes. A substring may be inserted or removed at a specified position for all values of the attribute, or for a single value.
  • Added support for the following substitution identifiers in text values:
    %date% or %jrbdate%
    %time% or %jrbtime%
    Note that the Windows command line interpreter automatically translates %date% and %time%, hence the provision of the alternative identifiers, where the format used is controlled by the JRBDATETIME environment variable. Either may be used when values are read from a file.


  • Modified to work around an NSS bug when changing the ownership of a file and the new owner has a volume quota which is already exceeded. Changing the ownership fails and ownership is set to the NCP server object. But at the same time the file attributes are corrupted to something like [RoHSyA-TPShDiCiRiDcDmDs--M-]. Setowner now detects this and reinstates the original attribute settings. Note that changing ownership is successful when the user is under quota, but the change of ownership takes them over quota.


  • Updated so that for dynamic groups (either of class dynamicGroup, or of class group with the dynamicGroupAux auxiliary class added), passwords can be set either for the group object or for the group members. The default for dynamic groups is to set the password for the group itself, but /k can be used to specify passwords must be set for the members.


  • Added the ability to specify an alternative XML file when using /u. This may be useful in the event of trustee loss, allowing an older version of .trustee_database.xml to be recovered from backup, and then used to compare the contents with trustees retrievable via NCP.
  • Fixed an issue when using /u with an object name where the path could be displayed without the colon after the volume name.
  • Fixed an issue where a non-zero error count may not be reported in the totals when processing only a single server.
  • Added a check for an invalid path when <entity> is an object, and /u is used to process an XML file.
  • Added the ability to check for matching NCP trustees when is an object and /u is used. Previously, checks could be done only when <entity> was a path.
  • Added radio buttons to the window for browsing to select an object in eDirectory in the GUI versions, to indicate whether to process the selected container object, or objects in the container.


  • Added /h to allow selection of the types of groups (static, dynamic, or static with the dynamicGroupAux auxiliary class added) which are displayed.
  • Retired the GUI versions of this program. Their functionality has been incorporated into the GUI groups program where it may be invoked by clicking on the “Groups belonged to” radio button on the “Main” tab sheet.


  • Modified so that when /$ is used to indicate that the lowest level of the path is a directory, /d defaults to ‘d’ when neither ‘f’ or ‘d’ is used. A value of ‘f’ for /d is now ignored when /$ is used.
  • Added fields ‘lt’ and ‘lp’ to display whether a Windows file or directory is a junction or symlink, and the path to which it points.