To prevent java classes from later setting it, I would use the NOSETVALUE flag on the attribute instead. This is used by the MIF to prevent java classes from overriding something provided in the message payload. Something like:
mbo.setValue("PERSONID","MAXADMIN")
mbo.setFieldFlag("PERSONID",mbo.NOSETVALUE,True)
DELAYVALIDATION is also used by the MIF but is intended to handle scenarios where values may not be set in the correct order. It tells the framework we don't want the validation to fire until everything has been provided. For example, if you tried to set the ASSETNUM before the SITEID, the ASSETNUM validation would normally fail because it would try to find that asset in a correct status with a NULL siteid. By delaying validation, we can wait until the SITEID has been set and thus the validation occurs as expected.
------------------------------
Steven Shull
IBM
------------------------------