PARADISE newdmdiff and bulkload : BETA RELEASE 4
------------------------------------------------

Main changes :-

	********************************************************
	* The attribute "nonMasterUpdatedAttrType" replaces    *
	* "masterUpdatedAttrType" - bulk management function   *
	* 7 may be used on Directory sub-trees to carry out    *
	* the replacement for entries that were loaded by      *
	* bulkload. Alternatively the option can just remove   *
	* the attribute					       *
	********************************************************
	
	a) Object class list insertion when creating an entry.
 	   List insertion requires the presence of either a 
	   structural object class such as "person" or of the new 
	   bulk attribute "bulkEntryClass" when creating an entry.

	b) 6 management functions have been added to report on 
	   master/create/delete sources; to find "expired" entries ;
	   to "dump" a sub-tree to a file ; and three options to
	   compare a full data source file against the Directory.

	   The bulkmanagement mode of bulkload is entered using

	   	bulkload -m
		
	c) -u and -p command line parameters to allow user name
	   and password input.

	d) Newdmdiff has -s and -so options :- used if delete attribute
	   requests are to be output instead of delete entry ones (for
	   secondary data sources that only add attributes as
	   opposed to requesting the creation of entries.)

	   Newdmdiff no longer inserts a remove attribute request if
	   all of the values for a given attribute are absent in the
	   new file. It is up to Bulkload to replace a remove value
	   that is to delete the last value of a Directory attribute with
	   a remove attribute request.
	
	e) Support is provided for data sources that can not be readily 
	   structured to match the Directory e.g. a telephone data
	   source that holds data for all of the organisational units of 
	   the Registry in one long list, when the Directory holds
	   them as distinct OUs.

	   A sub-directory list may be defined to indicate precisely
	   which OUs a given data source is to be applied to e.g.

	   if the Registry units are held in the Directory as

	   		   o=UCL

	   ou=Art ou=Accounts ou=Exams ou=Records ou=Zoology

	   then we could update the Registry OUs using..
	   
		rootedAt = c=GB@o=UCL@bulkSubDirList=RegistryList

		# updates for the Registry OUs..

	   Where the RegistryList (which must be held at {c=GB@o=UCL}
	   given the above rootedAt) is defined as..

	   	bulkSubDirList=RegistryList
		bulkSubTreeDN= c=GB@o=UCL
		bulkSubTreeDNextension= ou=Accounts
		bulkSubTreeDNextension= ou=Exams
		bulkSubTreeDNextension= ou=Records.

	   Whilst if the Registry had been held in the Directory as

			      o=UCL
			   
	   		   ou=Registry

		ou=Accounts ou=Exams ou=Records

	   then a special "All" sub-directories case could be used..

	   	rootedAt = c=GB@o=UCL@ou=Registry@bulkSubDirList=All

		# updates for the Registry OUs..

	f) Manual over-ride for non-create or delete sources.

	g) Full-stop delimeters within commonName RDN components
	   are replaced internally with spaces (though still present
	   in output files.)

	
make and Makefile will need updating :-

make 
	1) specify the TOPDIR and the path name to CONFIG.make.

Makefile
	It was clear from the email that I have received that ISODE
	is not always fully installed.

	1) For those sites that do not have the include files fully installed
	   then you may well have problems with the <isode/quipu/X> include
	   statements. Andrew Findlay at Brunel, has suggested that if ISODE
	   is not fully installed then use :-

	        ln -s $TOPDIR/h isode

	   in the bulkload build directory, where $TOPDIR is the path to the
	   ISODE top-level build directory.
	   
	2) If libdl.a and libpp.a are unavailable then the MHS syntaxes
	   can not be used. Append "-DPPANDDLUNAVAILABLE" to "CFLAGS". 
	   Also remove the libraries from "LDLIBS".

	3) If libdl.a and libpp.a are available then set up PPDIR accordingly.
	   They have there own pointer since a number of sites hold these
	   libraries in some very strange places.
	   
	   Note: PP version 6.4 will have a single library (libpp.a).

	4) Make any other required adjustments to the "Lines that will need 
	   changing" section.

Then use 

    ./make all

to compile the "newdmdiff" and "bulkload". 


To install, use

    ./make inst-all


Next insert the oidtable bulk additions as defined in :-

	"bulk.oidtable.gen", bulk.oidtable.oc" and "bulk.oidtable.at".

Note: 1) updates to oidtable.at..


nonMasterUpdatedAttrType:	bulkAttributeType.14	:CaseIgnoreString

bulkEntryClass:			bulkAttributeType.20	:CaseIgnoreString

bulkSubDirList:			bulkAttributeType.25	:CaseIgnoreString
bulkSubTreeDN:			bulkAttributeType.26	:DN
bulkSubTreeDNextension:		bulkAttributeType.27	:DN


Note: 2) updates to oidtable.oc..

"nonMasterUpdatedAttrType" added to the classes that contain "masterUpdatedAttrType".

# bulkSubDirList is the entry RDN..
bulkSubDirListClass:	bulkObjectClass.3: top: bulkSubDirList, bulkSubTreeDN, bulkSubTreeDNextension :\
		description, masterUpdatedAttrType, lastModifiedTime, lastModifiedBy, acl


Note: 3) Documentation

The full list of tailor options are described in the documentation
"bulkload.ps" and "bulkload.fig.ps" or the raw ms(with tbl)/fig files
"bulkload.ms" and "bulkload.fig", which are contained in the "docs" sub-directory.

Note: 4) for those sites that have a bulkloadtailor file already then the new 
statements are:-

#
# Any existing values for an attribute may be cleared down when a master source
# adds a value to the attribute for the first time (i.e. the attribute type
# is listed in the entry's "nonMasterUpdatedAttrType" attribute).
#
Existing attr value may be cleared if master source applies 1st value : YES

.. and as required by user (optional)..

#
# Auto insertion of missing object classes
#
# autoInsertOnAttrT -	If an add entry request has this attribute type then check
#			for the "autoInsertOnAttrV" value.
# autoInsertOnAttrV -	If the add entry "autoInsertOnAttrT" type has this 
#			attribute value then insert the "autoInsertObjCls" classes.
# autoInsertObjCls  -	Multiple statements containing the object classes to be inserted
#			(if missing) within an add entry request.
#
#
autoInsertOnAttrT	:	bulkEntryClass
autoInsertOnAttrV	:	personClass
autoInsertObjCls	:	person
autoInsertObjCls	:	organizationalPerson
autoInsertObjCls	:	newPilotPerson
autoInsertObjCls	:	pilotObject
autoInsertObjCls	:	quipuObject

autoInsertOnAttrT	:	objectClass
autoInsertOnAttrV	:	person
autoInsertObjCls	:	organizationalPerson
autoInsertObjCls	:	quipuObject
autoInsertObjCls	:	pilotObject
autoInsertObjCls	:	newPilotPerson


..and for usage with the management functions..


default DN	:	"c=GB@o=University College London@ou=Computer Science"
