Got PUT_factory working. For those interested, here's my current PUT_factory. I also found a typo in my xml test but fixing it didn't help. I still can't create ZSQLMethods via xmlrpc. But now it doesn't bother me so much. # Implement the "hookable PUT" hook. import re, OFS.DTMLMethod import Products.ZSQLMethods.SQL import sys TEXT_PATTERN = re.compile( r'^text/.*$' ) ZSQL_PATTERN = re.compile( r'<params>([^<]+)</params>(.*)', re.DOTALL ) # New behaviors: # Support for ftp put of ZSQL methods (sorta). Connection ID is hardcoded. # Default doctype is DTMLMethod, not DTMLDocument. def PUT_factory( self, name, typ, body ): """ """ if TEXT_PATTERN.match( typ ): grps = ZSQL_PATTERN.match(body) if grps: return Products.ZSQLMethods.SQL.SQL(name, '', 'Oracle_database_connection', grps.group(1), grps.group(2)) else: return OFS.DTMLMethod.DTMLMethod( '', __name__=name ) return None