for id, xid, record, info in converted:
    try:
        cr.execute('SAVEPOINT model_load_save')
    except psycopg2.InternalError as e:
        # broken transaction, exit and hope the source error was
        # already logged
        if not any(message['type'] == 'error' for message in messages):
            messages.append(dict(info, type='error',message=u"Unknown database error: '%s'" % e))
        break
    try:
        ids.append(ModelData._update(self._name, current_module, record, mode=mode,
                                     xml_id=xid, noupdate=noupdate, res_id=id))
        cr.execute('RELEASE SAVEPOINT model_load_save')
    except psycopg2.Warning as e:
        messages.append(dict(info, type='warning', message=str(e)))
        cr.execute('ROLLBACK TO SAVEPOINT model_load_save')
    except psycopg2.Error as e:
        messages.append(dict(info, type='error', **PGERROR_TO_OE[e.pgcode](self, fg, info, e)))
        # Failed to write, log to messages, rollback savepoint (to
        # avoid broken transaction) and keep going
        cr.execute('ROLLBACK TO SAVEPOINT model_load_save')
    except Exception as e:
        message = (_('Unknown error during import:') + ' %s: %s' % (type(e), unicode(e)))
        moreinfo = _('Resolve other errors first')
        messages.append(dict(info, type='error', message=message, moreinfo=moreinfo))
        # Failed for some reason, perhaps due to invalid data supplied,
        # rollback savepoint and keep going
        cr.execute('ROLLBACK TO SAVEPOINT model_load_save')
if any(message['type'] == 'error' for message in messages):
    cr.execute('ROLLBACK TO SAVEPOINT model_load')
    ids = False