Hi, Over the last month or so, I've rather wonderfully managed to corrupt my ZODB with artifacts of my Currency class that no longer exist. This is due to: (i) moving the module to a different package (twice) (ii) renaming the module (iii) changing it's inheritance hierarchy (having removed all Zope-awareness from class has caused loads of setstate issues in regard to either __basicnew__ not found, AttributeErrors, and problems with non-derivation from AcquireImplicitWrapper) I now desperately need to write a parser to convert all of these nasties to ZCurrency types. I've come up with the following ExternalMethod - whereby I've defined a __currency__ attribute in each obselete incantation's product (Currency object's are used in the spirit of DateTime rather than within ObjectManager containment structures): from Acquisition import aq_base from Products.BastionBanking.ZCurrency import ZCurrency def repair(container, counter=0): for (k,v) in container.__dict__.items(): if hasattr(v, '__currency__'): setattr(container, k, ZCurrency(v._currency, v._amount)) counter += 1 for object in container.objectValues(): for (k,v) in object.__dict__.items(): if hasattr(v, '__currency__'): setattr(object, k, ZCurrency(v._currency, v._amount)) counter += 1 if hasattr(aq_base(object), 'objectValues'): repair(object, counter) return counter However, it doesn't seem to find anything to convert. Does anyone have any ideas? TIA, Alan _________________________________________________________________ Surf the net and talk on the phone with Xtra Jetstream @ http://www.xtra.co.nz/products/0,,5803,00.html !